3 :
デフォルトの名無しさん :03/08/19 13:11
2
4 :
デフォルトの名無しさん :03/08/19 14:29
値型をボクシングするときは別のメモリ領域に値がコピーされてそこをobject型インスタンスが参照するんですか? それとも値型自体のアドレスを参照すんるでしょうか?
6 :
デフォルトの名無しさん :03/08/19 16:38
英語読めないんで訳していただけないでしょうか? エキサイトで翻訳しても意味がわかりません、、
MouseMoveって1pixel動かしただけで呼び出されるんですね
C#ではダブルバッファ無いんだね
ある
11 :
デフォルトの名無しさん :03/08/20 12:05
privateフィールドの配列に要素アクセスしたいんですがメソッド作らないとできないのでしょうか? ↓こういう処理を int num = (new Hoge()).GetAtHoge(2); class Hoge { private int[10] hoge; public GetAtHoge(int index) { return hoge[index]; } } ↓プロパティとかインデクサとか使ってこういうのはできませんか? int num = (new Hoge()).Hoge[2];
> プロパティとかインデクサとか使ってこういうのはできませんか? できますよ メソッドというかクラス作って
public int[] Hoge { get { return hoge; } }
14 :
デフォルトの名無しさん :03/08/20 13:12
内容を保持したまま配列のサイズを変更することは可能ですか? VBやVB.NETで言うところのRedim相当のことがやりたいのですが・・
ArrayList使え
なるほどできました。ありがとうございます。
時期バージョンではMenuItemにTagメンバをつけとくれ。
18 :
デフォルトの名無しさん :03/08/20 15:46
もともとC++野郎なのですが、C#(というか.NETやJava)の ガーベジ・コレクションというやつがイマイチ生理的に気に入りません。 デストラクタがいつ働くか分からない?? なにそれ??って感じです。 一応、どんなものかは分かっているのですが、その魅力というか、 便利さを教えてもらえないでしょうか。
多くの場合、明示的な解放がいらない
20 :
デフォルトの名無しさん :03/08/20 16:13
>>18 魅力はJavaとかC#やってC/C++に移行した人だけが体験できるものであって
逆の人は気持ち悪いだろうね
ただ、コレだけはいえる。
JavaとかC#の場合、
そういうこと考えてプログラミングする人と
そうでない人のコードは差が歴然
>>20 俺、元々C++屋だったけど、別に気持ち悪くないよ。
どうせ、C++でクラス作るときもメモリ管理用のラッパクラス作って参照カウントとかしてたし、
それに比べたら言語レベルでサポートされたガベコレの方がいいよ。
>>19 そうですね。
でも自分はまだ、明示的に解放したほうが精神衛生上いいんですがw
いずれ慣れるのかな・・・。
>>20 なんか、GCが常にオブジェクトの有効期間を監視していることによる
パフォーマンスの低下とかが気になっちゃうなんですよね。
それと引き換えにメモリリークの危険がなくなり、手間が省けるように
なったってことなんでしょうが。。。
>>21 リンク先みました。まさに 取り上げられた という気分ですw
>>23 参照カウントとか使って自分で自動メモリ管理コード書いたり、
shared_prt とか使うよりは、
Java とか .NET のガベコレの方がパフォーマンスいいよ。
なにが気に入らないといって、C#のデストラクタは呼ばれないことが あるって点かなあ。 それがイヤならusingで囲めって話なんでしょうけど、 openにはclose、mallocにはfree、newにはdelete、そして コンストラクタにはデストラクタと、必ず対になるように書くように 教えられてきた人間にとってはけっこう抵抗あったりします。
>>24 そうですか・・ コード量が減るのは実感してるんですが、
パフォーマンスについては他の要因も多くて、ガベコレが
既存のやり方と比べてどうなのか、というのはイマイチ実感できてないです。
>>25 ならば、明示的に IDisposable.Dispose を呼ぶよう習慣化したらいいのでは?
IDisposable は明示的に Dispose させる為のインタフェースでしょ Dispose して当然じゃん
「パフォーマンスの低下とかが気になっちゃう」香具師がドトネト触る方が 大いなる間違い
>>27 そうですね・・・。明示的に廃棄(?)処理が必要なものは、
そうやってやる必要があるんでしょうね。
パフォーマンスを気にしないプログラマは怖い 大いなる間違いもへったくれも、趣味グラマじゃなければ 選択の余地がないことのほうが多い
いみふめ
いちいち旧言語の機能とマップしないとものを考えられない奴はアホ
誰も旧言語の機能とマップなんてしてないわけだが。
GCのパフォーマンス低下以前に ニューニューしまくってパフォーマンス低下はありまくり。 ディレクトリ巡回して全てのファイルを表示するコード書くと 途中でカクカクするよ。
>>38 それは自分のプログラムが悪いだけではないのかと小(ry
というか添削してやるからソースを出せと
普通にプログラムしてればいいんだよ。 今まで綺麗にオブジェクト管理してたヤツ → 参照カウントや開放処理が楽になる 今までメモリリークなプログラム書いてたヤツ → ガベージコレクタ大活躍 それでもダメなヤツ → 「.NETは糞」発言
C/C++をやってた人間がGCに出会った時、 なんの違和感もなく受け入れられるほうがヤヴァイ気がするんだが
なんでC/C++と比較するんだ。
ソ ー ス を 出 す の が 恥 ず か し い 方 が い ら っ し ゃ い ま す
誰も比較してないわけだが。
>>38 ディレクトリ巡回して全てのファイルを表示するコードってニューニューしまくり??
少なくとも優劣の話はしてないわけだが、 なぜそう比較の話になると過剰反応するかねえ
優劣の話だと思っているのはおまえだけ
優劣の話はしてないと思いますが…
別の言語だから違和感とかいう問題じゃないんじゃない?
>>48 お前のほうが過剰反応
っていうか、GCの実行ってコードからも指示できなかったっけ?
>>43 C/C++ でメモリプールの管理とか、shared_ptr の実装の仕方知ってて、
かつ、GC の動作原理についてちゃんと分かってるなら
別に何の違和感もなく GC を受け入れられるよ。
>>57 ヘッダ書くのがうざいっす。
くだらんながらも俺がC++に戻りたくない一番大きい理由・・・
GCはGCできちんとメモリが解放されるように
参照のゴミが残らないように気をつけなきゃいかんけど
仮にゴミが残ってても無駄にメモリ食うだけでハングの元にはならない。
もうメモリに十分余裕あるから解放済みポインタが残ってハングする可能性を含むより
多少のメモリの無駄があっても安全な方がいいよ。
>>57 いや、普通にそんな奴でも C# に移ってるよ。
メモリ管理以外にも、プロパティとか
インターフェースとかデリゲートとか結構魅力的。
ライブラリも MFC 使うのに比べたら
.NET フレームワークのクラスライブラリは天国だし。
あと、58の言うヘッド書くのうざいっての激しく同意。
>>57 C♯に移行する理由は、そういう低レベル(低層という意味)な問題じゃない。
現実的に便利なんだよね。
オレもヘッダはめんどくさい。
勝手にやってくれるんだから勝手にやらせておけばいい
あとイベントハンドラが言語レベルでサポートされてるのも大きいな。
63 :
デフォルトの名無しさん :03/08/21 11:23
C++でwhile(cin>>a){処理}のように入力が成功したら繰り返すのはどうしたらいいんでしょうか? while((bool)(a=int.Parse(Console.ReadLine()))) と書いてもbool値に変換できませんって怒られます。
>>63 false = 0, true = 0以外 と思ってませんか?
>>63 それは int が bool に変換できないとかいう以前の問題な気が。
string line;
while( (line = Console.ReadLine()) != null)
{
int a = int.Parse(line);
}
あと、int を bool に変換したかったら a != 0 ってしないと駄目。
それに、int.Parse は変換できなかったら 0 返すんじゃなくて、例外出す。
>>65 ,
>>66 レスありがとうございます。
>>66 さんのコードでは何を入力したらループが終わるんでしょうか?
何も入力しないでエンターを押してもループが続くんですが。
もしかしてwhile( (line = Console.ReadLine()) != null)は無限ループで try{ int a=int.Parse(line); } catch{ break; } でループから抜けるっていうのでいいんですか?
Ctrl+C
ああ、空行入力でループ抜けたかったら != null を != string.Empty に。
72 :
デフォルトの名無しさん :03/08/21 13:58
やれやれだぜ
>>72 そりゃ仕様次第だろ。
リダイレクトとかパイプ使いたいんだったら ctrl+C で終わるようにしたほうがいい気がするし、
ctrl+C なんてものの存在を知らない人をターゲットにしたいんなら空行で終わりにした方が。
っつーかさ、空行で終わるのもctrl+C で終わるのも仕様なんだったら両方実装するだろ。 どちらかにする意味がわからん
77 :
デフォルトの名無しさん :03/08/21 22:48
.NETでMFCのCIPAddressCtrlにあたるものってありませんか?
78 :
デフォルトの名無しさん :03/08/21 23:27
C#で画面をキャプチャする方法をご存知の方がいましたら、教えてください。 あれこれメソッド探したけど見つかりませんでした。
C#コンパイラって自動的にinline展開とかしてくれるのかな。 たとえば Hoge GetHogePlus() { return m_hoge.GetHoge(); } みたくメソッドの中身が単純なコードとか。
>>79 少なくとも JIT 時にはインライン展開するはず。
MSIL 化する際に展開されるようになってたかどうかは記憶にない。
81 :
デフォルトの名無しさん :03/08/22 04:50
イテレータみたいなものってありますか? あとコレクションクラスの解説をしてある本とかないでしょうか?
>>83 IEnumerable IEnumerator
84 :
デフォルトの名無しさん :03/08/22 07:38
85 :
デフォルトの名無しさん :03/08/22 11:09
Windowsコントロール内にタイマーを置き、一定時間ごとにマウスカーソルの 位置を調べるということをやっています。 それはSystem.Windows.Forms.Cursor.Positionを参照することで実現できたんですが、 全画面上での位置しか取得できません。 そのWindowsコントロールから見て相対位置に計算するにはどうすればいいですか?
Control.PointToClient Control.PointToScreen
>>86 おかげさまで下記のような感じで無事にできました。ありがとうございまふ。
System.Drawing.Point p1,p2;
p1=this.PointToScreen(new System.Drawing.Point(0,0));
p2=System.Windows.Forms.Cursor.Position;
p2.Offset(-p1.X,-p1.Y);
88 :
デフォルトの名無しさん :03/08/22 21:18
前のほうがいいような
C#2.0にはDon Symeたんが大きく関わってるから、やっぱり関数型的な要素が入ってきてるね。
templateも導入されるらしいが、C++みたいに書きづらいのはいやん。
JavaやC++と比べて進歩が早いな。
釣り警報
ObjectSpaces(ぼそ)
>>92 C++は土台が腐ってるから進歩はないな。
JavaにしてもC#の後追い以外の部分は完全に停滞しているしな。
まあ、枯れると言うのはいいことでもあるわけで・・・
98 :
デフォルトの名無しさん :03/08/23 00:56
っていうかJAVAがすでに完成されてるから、未熟なC#には開発の余地があっていいね
>>98 釣りとしても100点満点中3点。
現時点ですでに Java よりも C# の方が機能多いし。
>>99 3分以内に一人釣れたから合格点かと
100get
>>99 俺は釣りじゃないのでマジに教えて欲しいんだけど
>現時点ですでに Java よりも C# の方が機能多いし。
どういうことでしょうか?
お前ら最強伝説スレに帰れ
>>101 1.5でC#の機能が追加されるっしょ。
>>103 なんで先発のJAVAが後発のC#に後れを取っているんだ?
>>106 そりゃあんた、パクらせたら世界一の大企業、M$ 様がパクったんだぞ。
パクり元よりもいいもの作ってるに決まってるじゃん。
つまりJavaよりC#の方がいいものだと言いたいわけか。
つまりJAVAが世界最強ってことか。まあ、納得。
何を以って「いい」だの「最強」だのと言ってるのかが分からない
いや、だから、おまえら C# 最強スレにカエレ。
他人的主観
116 :
デフォルトの名無しさん :03/08/23 13:26
A.csの中にあるクラスがものすごく縦長になっているので、それと同じクラスの続きをB.csに書きたいんですけど、 続きとは認識されず、すでにそのクラスはありますと言われてしまいます。 こういうことはC#では、不可能なのでしょうか?
>>114 URLがまぎらわしい
荒らし依頼かとおもた
まいくそそふとがんばれ
120 :
デフォルトの名無しさん :03/08/23 15:43
>117 の予定
staticメソッドからインスタンス毎の変数を参照したい場合 どういう実装がスマートですか? このstaticメソッドはコールバック関数で、インスタンス自体の参照を 渡したりとかは出来ないです。
>>121 そのコールバックのデザイン自体が間違ってる気が・・・
インスタンスは一つだけ?それとも複数?
CheckBoxってなんでAutoCheck付いてないの?ひとつひとつ処理書かなきゃいけないから面倒だ
CheckBoxにAutoCheckつけて何するんだ? メニューかなんかと間違えてないか?
>>122 インスタンスは複数作る想定で実装してます。
ちなみにコールバック関数はローカルフックのコールバックなので
変更できません。
>>125 そしたらコンストラクタで自身をstaticなArrayListだかhashに登録するしかないんじゃないの。
どうやって目的のオブジェクトを見つけるのか知らないけど。
TabControlのタブの部分の総横幅をページ部分の横幅に合わせる方法ありますかね? 2段になったとき、ものすごく無様なんで。。
>>116 >>117 縦長クラス厨の横行を防ぐためにも1クラスのファイル分割を
サポートしてほしくない・・・と思ったけど
コンバータで自動生成したメソッドだけ別ファイルにはきたいときは便利だな。
C#ってCの#includeみたいなのあったっけ?
ねーっつーの
夏休み早く終わらないかな・・・
131 :
デフォルトの名無しさん :03/08/24 10:19
C#の限界が垣間見えました
あと1週間の辛抱か。
大学はまだ続くところもあるよ
134 :
デフォルトの名無しさん :03/08/25 04:34
C#でコンソールアプリを作った場合も起動とか描画とか遅いの?
>>134 JIT コンパイルしないと駄目だから、初回起動は遅い。
描写って、コンソールに文字出力すること?
それの速度は C++ の cout とかと比較したことない。
コンソール出力の速度が気になるのか
138 :
デフォルトの名無しさん :03/08/25 15:22
C#からTransparentBltを使おうと思うのですが、 IntPtr dst = g.GetHdc(); IntPtr src = gSrc.GetHdc(); TransparentBlt(dst, 10, 10, 300, 300, src, 0, 0, 290, 290, 0xff0000); g.ReleaseHdc(dst); gSrc.ReleaseHdc(src); だと、 gにまったく変化がない。 どうして?
ありがちー
140 :
デフォルトの名無しさん :03/08/25 23:04
ありがちぶりをおしえてくらはい
141 :
デフォルトの名無しさん :03/08/26 20:08
C#で改行はどうすればいいでしょうか? VBのControlChars.CrLFに当たるものは?
environment.newline
StreamReaderってforeachに渡せないのは変じゃね?
145 :
デフォルトの名無しさん :03/08/26 22:56
sss <-> "sss" を相互に変換するStringのメソッドって無いの?
148 :
デフォルトの名無しさん :03/08/26 23:04
>sss <-> "sss" "sss" <-> "\"sss\"" ってこと。Trimみたいなやつ。
149 :
デフォルトの名無しさん :03/08/26 23:07
どっちのインターフェースが一般的? string Search(string key); // 見つからなければnullが返るかも bool Search(string key, out string result);
>>149 個人的に下の方を選ぶかな
if (x.Search(key, out result))
{
}
string result = x.Search(key);
if (result != null)
{
途中で書き込んじゃったスマソ どっちかって言うと上の例の方がスッキリする感じ。
後者はマニュアルレスで使えるが 前者はマニュアル読まない厨房がぬるぽ起こしそうだな。
155 :
デフォルトの名無しさん :03/08/26 23:19
ぬるぽ起こしたいよな
(´・ω・`) ガスッ
と7と ヽΣ ∧_∧
ヽ つ ´Д`)
>>155 〃 し´ ( つ つ
/ / /
(__)_)
マニュアル読まないなら後者でもbool値を返すことを知らない罠
>>158 すまん。Javaスレから、C#がどんなもんか見に来ただけだよ。
160 :
デフォルトの名無しさん :03/08/27 00:54
読み込んだ Ini をキャッシュして、 さらに環境外でのファイルの書き換えの監視までサポートしてくれれば 相当使えると思うんだけど。
163 :
デフォルトの名無しさん :03/08/27 02:06
namespaceを初期化する為のコードを記述できて そのnamespaceをusingするだけで自動的に呼ばれるブロックって無い? namespace MyNamespace { initialization { Console.WriteLine('using MyNamespaceするだけで自動的にこのブロックが実行される'); } }
>>164 namespace内のクラスの初期化・登録等々。
いちいち外部から明示的に初期化コードを呼び出すのは面倒なので。
1行書けば済むことでは。
・・・やれやれ
というかnamespaceを勘違いしてる気がする。 namespaceってのは識別子が重ならないようにするためのものであって 実行時制御をするものではないはず。 usingってのはいちいちネームスペースの名前まで全部書くのがめんどいから、 「何も書かずに識別子書いたとき、デフォルトでそのnamespaceの中探してね」 ってことなので、中身の初期化どうこうは管理外。ぶっちゃけ全部手書きで 名前解決してやればusing使わなくてもプログラムは書ける。 要するに、苗字みたいなもの。 鈴木太郎君と山田太郎君が居たとき、ただ太郎君と呼ぶだけじゃどっちかわからないけど、 苗字までつければ区別できる。でも毎回苗字まで呼ぶのはめんどいから、 using 鈴木 とやって、太郎君を呼んだらそれは鈴木の方だよとあらかじめ言っておくわけ。 そういうことやりたかったら複数クラスをまとめて管理する 管理クラスでも作るほうがよろしいかと思われます。
170 :
デフォルトの名無しさん :03/08/27 04:15
>>163 ネームスペースの意味わかってねー
>>160 せめてConverter使えー
ってかXMLSerializer使ったことあるかー?みんなー
Delphiのユニットみたいな物を想像しているのかね?
>>144 >StreamReaderってforeachに渡せないのは変じゃね?
作ってやったぞw
使い方:
foreach(string ln in new TextReaderForeach(すとり〜むり〜だ〜))
{
Debug.WriteLine(ln);
}
public class TextReaderForeach : IEnumerable, IEnumerator
{
private bool eof=false;
public System.IO.TextReader reader;
public TextReaderForeach(System.IO.TextReader reader){this.reader=reader;}
public IEnumerator GetEnumerator(){return this;}
void IEnumerator.Reset(){throw new InvalidOperationException();}
object IEnumerator.Current{get{string ln=reader.ReadLine();eof=(ln==null);return ln;}}
bool IEnumerator.MoveNext(){return!eof;}
}
質問です。C#でstd::listに相当するコレクションはありますか?。 よろしくお願いします。
174 :
デフォルトの名無しさん :03/08/27 07:33
MSDNに.NET compact framework 1.0SP1再りょうふパッケージ っていうのが出てるんですけどVC.NET2003に入っているのからvervが上がっているんでしょうか?
順序づけされたコレクションの特定の位置にオブジェクトを挿入したり削除したり したいってわけです。
176 :
デフォルトの名無しさん :03/08/27 07:55
再頒布です あとVCじゃなくてVS.NET2003でした。 インストールしてあるフォルダのランタイムと落とせるようになっていたものとの CABファイルのタイムスタンプは違うんですがどちらも v1_0_5000_0だったんです。
>>170 >ってかXMLSerializer使ったことあるかー?みんなー
シリアライズは変更の激しいアプリの設定には向かないと思うが。
180 :
デフォルトの名無しさん :03/08/27 11:11
っていうかXMLは無駄にでかくなるだけだと思うが
181 :
デフォルトの名無しさん :03/08/27 11:22
Application.CommonAppDataRegistryフォルダを一発で作る方法おせーて
182 :
デフォルトの名無しさん :03/08/27 12:35
>148 Trimでパラメータ指定すればできるだろ?
183 :
AKATSUKI :03/08/27 13:43
・データ Access2000 ユーザID | パスワード --------------------- 1000 | 0001 1001 | 0002 『レコードを抽出してユーザIDとパスワードのレコード が一致したならMessageBoxに[OK]を表示』というやり方でやりたいんですが・・・。 自分で↓のように作ってみたんですがうまくいかなくて・・。textBox1にユーザID、textBox2にパスワードを入力するようにしてあります。 誰か教えてくれませんか? ========ソース========================================================== //実行ボタン private void button1_Click(object sender, System.EventArgs e) { //レコードを抽出 dataView1.RowFilter = "ユーザID='" + textBox1.Text + "'"; dataView2.RowFilter = "パスワード='" + textBox2.Text + "'"; if(textBox1.Text == "" || textBox2.Text == ""){ MessageBox.Show("入力が違います1");} else{ if(dataView1.ToString() == dataView2.ToString() ) { MessageBox.Show("OK"); } else{ MessageBox.Show("入力が違います2"); }}} private void Form1_Load(object sender, System.EventArgs e) { odaPas.Fill(pasSet1,"T_パスワード"); //データを読み込む } ====================================================================
SELECT COUNT(*) FROM テーブル WHERE ユーザID='あれ' AND パスワード='それ' をExecuteScalarして、
>>178 XMLSerializerのシリアライズはバイナリじゃないぞ
>>185 バイナリかどうかってことじゃなくてシリアライズが問題。
情報A,B,C,Dを保存していたのをソフトのバージョンアップで
A,C,E,Dの情報を保存するようになったとたん破綻するってこと。
レジストリやINIファイルならその問題はおこらない。
>>186 だからXMLSerializerだって言ってるだろうが!
XmlSerializerクラス使ってたことあるけど、
>>186 な感じでプロパティ1つでも変わると互換性が無くなってしまい、解決方法が解らず。。
なんか上手い設定保存方法ないかなぁと思ってるんだが、、。
興味ない要素は無視すればいいだけだろ
誰がどうやって?
>>184 すいません。
よくわからないです・・・。
>>189 Application.UserAppDataPathに保存すれば万事解決。
という悲しい落ちなのか・・・
>>193 そうじゃなく、例えば
class Setting {
public int Value1;
}
のような設定を管理するクラスをXmlSerializer.Serializeしたとして、
後で設定を増やしても、
例
class Setting {
public int Value1;
public int Value2;
}
XmlSerializer.Deserializeだと正しく読み込めないと言うこと。
iniのような1つずつ設定を保存していく方法はめんどくさいし、、。
>>194 ビルドし直し=シリアルの同一性の保障がない。
だからデータの互換性なんてあきらめろ。
というのがApplication.UserAppDataPathの戻り値に込められた
MSの意図なのだと思ってしまうのだが。
>>194 うちでは正しく読めてるよ。
開発途中でいくつか保存したい項目が増えたけど、問題は起こらなかった。
「正しく読めない」って何が起こるの?
クラスのプロパティ名を変えたり削ったりすると例外吐くよ
>>196 本当だ、、今試したら読み込めた。。。
読み込めないのは
>>197 が原因だったみたい。。
ありがとです。
なんでこんな作りかけが入ってるのか
200 :
デフォルトの名無しさん :03/08/28 20:13
StreamReaderクラスのFlushメソッドってヘルプ見たけどなんかよくわかんない。 これ使った方がいいの?誰か詳しい人いませんか?
>>200 StreamReaderにFlushメソッドなんて見あたらないんだが。
StreamWriterならまだCloseしたくないけどストリームに書き出したいとき。
C#でテンプレートとかサポートされた開発環境が手に入るのはいつ頃? いまはまだ違うんでしょ?
>>203 ベータ版なら年末から来年初め。
正式版は再来年初め。
結構先の話なんだな。テンプレ。早くほすぃ。
2004年後半かと。
>>204 >>206 ありがとう。微妙に食い違ってるが正式版は来年後半から再来年初めあたりか。
今でも充分便利な言語だろうけど、言語解説書とか金払って買うと後悔しそうだな。
208 :
デフォルトの名無しさん :03/08/29 11:33
Petzold本のコードのキーを判定するところで if((kea.Modifiers&Keys.Control)==Keys.Control) って言うのがあったんですが、 if(kea.Modifiers==Keys.Control) と違いはあるんでしょうか? keaはKeyEventArgs型です。
209 :
デフォルトの名無しさん :03/08/29 11:45
>>208 その他のキーとの同時押しの場合でもOKなようにしてるんだよ。
Shift+Ctrlとか。
>>208 著作権って知ってる?
無断転載は禁止されているはずですよ?
あなたも死刑判決ですね(ゲラ
引用
死刑って小学生ワードの一つだよな
今朝のニュースで死刑って言ってたけどあいつらは小学生だったのか。
214 :
デフォルトの名無しさん :03/08/29 15:19
死刑って、こまわり君だろ。
おまいら極刑
C#で、Officeのように切り離しの出来るツールバーを作るようなサンプルはありませんか?
220は死刑決定だな(ゲタ
最後に言わしてくれや
222に退廷を執行します。
_,..-‐'´ ̄ ̄ ̄``ー-、.._ / ,、.l´`!ヽ、 ヽ、 / イ._ヽ! ,!' _/ヽ ヽ . / lニニ(ニ)ニ、ニ! l . ! ヽ'´,イ lヽノ / . ヽ、  ̄ ̄ _,.ィ´ `ー! ‐‐‐‐‐ ‐‐‐‐‐‐ !´ 「`!┬‐‐‐‐‐‐‐‐┬!`! __K二二二二二二ニ/! l ii,!`"===・、 ====・" l'´,! 人jj ≡ .._ lrイ_ 彡´.... i'´ r、.,....ィ ノ. ..... `Y . / :::::: :::::::: ヽ ,./- ー ...!、 ヽ =‐‐‐‐ー'ー-----‐'ー‐‐‐‐=ノ 死刑。 ヽ 三三 / _r7-┐ `ー 、..__ ‐-‐ _,.....-t='´/´ ̄ ,._彡´ l `ーニニニ--ri二 `ー--イ,、 ! '´ ̄ ̄___!´ / ヽ >--‐ri'´ _,.-'´ ノ / / l _,.- '´,r' ,イ . / /‐ヘ´........_i' r'´ / / ヽ .!__,......,」 . / _,.. -‐'´ ヽ、..! / ´ ヾ_,!
225 :
デフォルトの名無しさん :03/08/30 04:31
SmtpMail.Sendを使用してメール送信するときメールを送信し終わるまで監視することは出来ないでしょうか?
226 :
デフォルトの名無しさん :03/08/30 04:56
メインフォームが表示されたらメインフォームの前面に ログインフォームを表示したいのですが、 なぜか5回に一回くらいの割合で ログインフォームとメインフォームを行き来できる状態になってしまいます。 ログインフォームはメインフォームを親ウィンドウとした モーダルダイアログで表示したいのです。 流れとしましてメインフォームのコンストラクタ、Loadイベント内で メインフォームに関する初期化を行い、初回アクティブ時 ログインフォームを表示する、という風に考えています。 以下はActiveイベントのコードです。 private void MainForm_Activated(object sender, System.EventArgs e) { if(bFirstActive) { bFirstActive=false; LoginForm frm=new LoginForm(this.GlobalObject); if(frm.ShowDialog()==DialogResult.OK) // if(frm.ShowDialog(this)==DialogResult.OK)これにしても結果は変わらず。。 ucForm.Focus(); else this.Close(); frm.Dispose(); } } いったいどこがおかしいのでしょうか。ご指摘お願いできませんか? よろしくお願いします。
Windows.Form以外のGUIライブラリが欲しいっす
つうか、メニューバーのデザインがヘボイやつしかねえじゃん。 新しいデザインの方は使わせない気ですか?
使おうと思えば使えるからいいんじゃないの? 標準はあれだけで十分。
>>226 frm.ShowDialog(this)で開いたfrmとthisを行き来できる時があるということか?
そんなわけないよ。
LoginFormのコンストラクタでなんかやってないか?
JavaにもDelphiにもあるActionクラス相当がないのが致命的
CSBスレにカエレ
>>230 そんなことあるから困ってるんですよ〜。
LoginFormのコンストラクタでは引数を変数に格納しなおしてるだけです。
ただひとつ気になるのが、
Oracleに接続してコンボボックス等を初期化するのでMainForm側の初期化処理が長い
ということです。
OleDbCommand のFillメソッドを多用しています。
でもこれはコメントアウトしても同じ現象が起こるので
関係ないと自分では思っています。
そういえばクリック連打して複数起動した時に再現できる確立が高い
ように思えます。
いったいなぜこういうことが起こるのでしょうか。
どなたか心当たりありませんか?
よろしくお願いします。
俺が言えることはアプリ起動時にLoadイベントよりMoveイベントの方が先に呼び出されると言うことだけです。
comコンポーネントにActiveMovieControlがないのですがどうすればいいですか? このコンポーネントを使って、自作のMoviePlayerを作りたいのです
>>235 参照ボタン押して
C:\WINDOWS\system32\msdxm.ocx
を指定すればいいかと。
旧バージョンよりはwmp9やDirectXのほうがいいような気も。
初期化処理を省いてもやっぱりだめでした。 前述の通りLoginFormのコンストラクタは 引数を変数を格納しているだけです。 また、Activeイベント以外の他のイベントでも試してみたのですが、 同様の結果でした。 あと、この現象の起こりやすい方法がわかりました。 ビルドしたexeをすばやく5〜6個起動して 立ち上がるより前に別のウィンドウ(なんでもいい) をいくつも立ち上がると発生率がかなり高いです。 私はexeを連打してタスクバーのショートカットより フォルダを別窓でバンバン開いてます。 そもそも起動時に認証ダイアログをモーダルウィンドウで表示する コードは >226 のであってるのでしょうか? もうこれ以上原因を追求できなくなってきて上記のコードがやっぱり 怪しい、、とにらんでますが解決できません。 もう一声よろしくお願いします。
>>236 wmp9やDirectXをする場合はどうすればいいのですか?
>>238 wmp9だとCOMのとこのWindows Media Player (c:\windows\system32\wmp.dll)。
DirectXだとMicrosoft.DirectX.AudioVideoPlayback.dll。(これは普通はないかも)
ちゃんとやるんならどちらもSDK入れてドキュメント見たほうが。
>>239 ありがとうございます。うまく再生できました
>ちゃんとやるんならどちらもSDK入れてドキュメント見たほうが。
これのヘルプなんてあったんですね。勉強して参ります
>>179 使ってみた人いる?
amazonのようには盛り上がらないか。
242 :
デフォルトの名無しさん :03/08/30 23:34
ソフト作ったのですが、デバッグなしで開始だと起動するのに F5で開始するとハングアップするのはなぜでしょうか? ウィンドウズ上で動くソフトなのですが
>>242 自分が作った所にバグがあるのでしょう。
>>244 あんたの作ったバグが分からない限り、
ハングアップする理由なんてわからないってことだよ。
>>242 デバッガ有り無しは忘れて普通にデバッグしてみたら?
このケースはC#では出会ったことが無いので
どんな原因興味あるんで見つかったら教えてよ。
>>245 バグの表示は何もでないです
コンパイルしても何もエラーはでません。
F5を押すと何も表示されないまま、ハングアップします
タスクマネージャーで見るとプロセスとしてはあるのですが
フォームを使ったアプリなんですが、普通こういうことって起こらないの?
>>247 だからバグがあるんだよ。
コンパイルエラーがでるようなものは記述ミスでありバグとは言わん。
>>248 よくわからないのですが、私のプログラムに問題があるってことですか?
私はフォームを作って、それに上記で質問した
>>239 MWP9を貼り付けただけのものです
プログラムの記述は何もしてません
ちなみに、フォームだけ作った状態でF5をやっても、コンパイル後反応無くなります
こういう意味では無くて?
再インストールしたら?
M$のプログラマをアンインストールしに行って来ます
後ろで動いてるソフトが原因とか
vs終了してエクスプローラから実行してみたら。
ソースをどっかにアップしろや
起動したときのウインドウの初期位置が はるか彼方に行っていたりしてな。
>>256 調べてみようと思ったら
デフォルトでは右下にある初期位置設定画面が無くなってるのですが
どうやって表示させるのですか?
>>256 やはり、プロパティ見ましたが、スタートポジションはデフォルトだったのでそれは違います
センターに設定してみましたがやっぱりダメでした
たまーに表示されないことがあるのでそれかと思って実際に試してみたが いつも表示されないね。
>>260 そうだよ。
VS.NET上から実行しない場合とデバッグなしの場合は問題なし。
ななんと!!他の人のパソでも同じ現象が!! ってことは、VS.NETが吐き出すソースが変ってことですよね? どこが原因かわかりますか? このソフトエロ動画視聴用作ったんです 上の矢印でいいシーンを繰り返してみたり、スキップできるんです Divxなどは早送りやコマ送りができないので それが擬似的にできるソフトを作ろうと思ってます
大昔作ったwmp9絡みのもの、デバックありで実行したら表示されない。 もちろん当時は何の問題もなかった。 それにPlayer.Controlsでエラーが出る。 調べたらPlayer.Ctlcontrolsに変わったらしくてそれは解決できた。 表示されないのはよーわからん。
>>263 そうですか・・残念
さっきも言ったように、新規プロジェクトでフォームだけ作成しても
同じ状況になるので、やっぱ再インスコか・・・
ありゃスマソ。 表示されるよ。ものすごい時間かかるが。 mscorlib.resources.dll (↑を読み込んだ後ここでしばらく休憩 Zzz...) accessibility.dll (↑を読み込むと表示)
>>265 おおお!そうなんですか?
でも、みなさんが、フォーム作っただけで開始してもそんなことにならないんですよね?
それとも、VS.NETの自体にバグがあるのかな?
夜遅くまで検証して頂いて申し訳ないです。
C#もうだめぽ
268 :
デフォルトの名無しさん :03/08/31 06:57
webブラウザ作ろうとしているんですがAxWebBrowserのメンバの解説はどこかにないんでしょうか? ヘルプに無いようなんですが。
あるよ
270 :
デフォルトの名無しさん :03/08/31 07:20
271 :
デフォルトの名無しさん :03/08/31 07:28
>>269 MSDNライブラリをAxWebBrowserで検索しても出てきませんでした。
.NET frameworkのクラスにウェブページを表示するのに使うのはどれなんでしょうか?
>>270 確かに無理かもしれないけど、そんな言い方ないんじゃないですか?
一応欲しかった機能は作れたので、私はこれで満足してます。
NET2003付属のライブラリには無いんですね。 HttpWebRequestとHttpWebResponseでもWebページ見れそうですが
「AxWebBrowser1」とか「WebBrowser1」とかで検索しろよ。
日本語で.NETコンポが大量に掲載されてるサイトどこ?
あー俺もデバッグで起動するとdllの読み込みで固まることある。
20回に1回くらいかな。
>>265 で書いてあるように、たぶん待ってれば起動するんだけど
すぐにデバッグ停止して、再起動してる。
たぶん環境との相性の問題だろうね。
278 :
デフォルトの名無しさん :03/08/31 16:47
C#からMS OfficeについているBookShelfを操作することってできないですか? 自前の辞書インターフェースを作りたいのですが。
犯罪だろ馬鹿
280 :
デフォルトの名無しさん :03/08/31 17:37
bookshelfに/dというオプションと引きたい単語を渡せば、それを表示してくれるよ。 同時に/hも試してみて。 C#から起動するのは、自分で調べてね。
>>280 単に起動するだけではなくCOM経由で
その内容を取り込んだりしたいんです。
>>281 C++だろうがC#だろうがCOMに対応していないソフトは
COM経由で操作することは出来ない。
たぶん、ウインドウハンドルとかクリップボードを利用して
裏技的なやりかたで取得するしかないんじゃないかな?
C#でもAPIは使えるので試してみるのもいいかもしれない。
void C()の関数内でどの関数から来たか知る方法ってありますか? void A() { C(); } void B() { C(); } void C() { AとBどっちの関数からきたか? }
>>284 そうなんですけど
前の関数をもう一度繰り返した後、また戻ってくるようにしたいだけなので
もっと簡単な方法があるのかなと・・
あと、void C() この関数引数なくても動作する物なので 他の関数から利用する場合、引数入れないといけなくなっちゃうので スマートじゃないかなーと
>>286 さっぱり要領を得ないが設計が間違ってるような気が。
あと引数の問題ならオーバーロードさせれば問題なし。
無理すればStackFrameやStackTrace使えばできそうだが・・・ あまりいい方法じゃないな
>>287 オーバーロードって文法ですよね?
なるほど、オーバーロードで調べてみます
>>288 無理すればってことは難しい方法なんでしょうね・・
私にはちょっとむりぽ・・
どもでした。
290 :
デフォルトの名無しさん :03/09/01 08:03
VS.NETのフォームデザイナでコントロールの配置をフォームのサイズに対して n分の一っていうようにはできないんでしょうか? やはり自分でコードかかないとできないんですか?
そんな機能あったってうれしくない
>>290 おまえのやりたいことはデザイナのプロパティでできる
私がやりたいのは this.button1.Location = new System.Drawing.Point(this.ClientSize.Width/3, this.ClientSize.Height/3); というのをデザイナからできるかどうかです。
できる。以上。
どうやればできるんでしょうか? プロパティにそれらしいところが見つかりません
そのnは常に一定なのか?
Anchorとは違うか
お世話になっております。
一からプロジェクト作り直して
・起動時にForm2をモーダルダイアログとしてForm1より前面に表示
こんだけの処理を書いて試してみましたが、
やはり無理でした。
状況は以前と同じです。
連打で複数起動して起動までの間に
すばやく別窓を多数表示させる、という方法で
複数起動したいくつかのうちでForm1とForm2を行き来のが
混じっているのを確認しました。
初回Active時のみフォームを表示するという
>>226 のコードはどうやら根本的に間違っていると思います。
頭をリセットして考えたのですが、他に方法が思い当たりません。
私のクソコードはボツだということはよくわかりました。
みなさんならどうしますか?
お教えくださいませ。
再度知恵をお貸しください。
C#でmp3を再生するのはどうすればいいでしょうか。 自力でデコーダを搭載しないと行けないのでしょうか
>>300 media player を利用すればいいだろうが
>>300 Microsoft.DirectX.AudioVideoPlayback.dll
C#のCOM経由でエクセルを制御する場合、 エクセル単体で起動するよりも高速化は無理ですか? ファイル開くのだけで1分くらいかかるのですが・・・。
304と同じくExcelネタなのですが、ado.netでExcelのデータの更新はできないのでしょうか? 複数のExcelファイルにSQLを発行するアプリケーションをつくっているのですが、 SELECT文まではうまくできたのですが、UPDATE文がとおらないです 調べた範囲ではINSERTはうまくいくそうなのですが。 adoならレコードセットで更新できるそうなので更新部分だけadoでつくるしかないでしょうか。
>>306 教えてくださいって言ってる人が
他人のために調べてあげるだろうか?
308 :
デフォルトの名無しさん :03/09/02 23:56
Windowsアプリケーションを作成しているのですが、そのアプリの設定ダイアログで 悩んでいるので質問します。 最近のアプリって設定項目が多いせいか、タブ切り替えからツリー選択式になって きているのが多いと思うのです。で、そういう設定ダイアログを作ろうと思っているの ですが、VS.NET2003ではどのようにデザインすればいいのでしょうか? タブ式ならば、タブコントロールでできるのですが、ツリー式のように、ダイアログ左側 にツリーがあって、そこを選択されたら、その都度、表示されている画面を切り替える というのはどうやってGUIをデザインするのでしょうか? 毎回、プログラムから表示位置とかコントロールとかを指定して描き直しとかになるので しょうか?それだと、かなりしんどいので、なるべく、GUIでサクサク作りたいのです。 よろしくです。
>>308 Delphi+TreeView+NoteBookでサクサク
310 :
デフォルトの名無しさん :03/09/03 00:11
今VC#.NET STD 2002を持っているのですが 2003を買う必要がありますか? 必要があるとしたら何故でしょうか?
>>309 VS.NET2003の場合はどのコントロールになるのでしょうか?
>>310 物欲を満たすために絶対に買うべきだ。
買わなければずっとすっきりしないでいることになる。
これ以上に必要な理由は一切ない。
VS.NET買っても儲けるのはゲイツ?
アメリカの景気が良くなれば日本も良くなるよ
たとえば2004が出なかったらどうする?とか思うじゃん。 XPは飛ばして2000で我慢とかいってもなかなか耐えられないじゃん。 だから買っておけよ。
>>311 C♯には数多くの限界があるため実現するのは非常に面倒くさいと言えるでしょう。
2chにマジレス期待した私がバカでした。 今度くるときは荒らしとしてきます。 さようなら
>>308 ユーザーコントロールの追加でコントロールをデザイン、
ユーザーコントロールを切り替えていく。
320 :
デフォルトの名無しさん :03/09/03 06:39
VisualC#のインストールってネット繋がないとインストールできないの?
プロダクトアクティベーションは電話でも出来るはず。
322 :
デフォルトの名無しさん :03/09/03 07:24
>>321 アクチベーションしないとインストールできないんですか?
インストールはできるけど起動制限があります。
324 :
デフォルトの名無しさん :03/09/03 07:55
325 :
デフォルトの名無しさん :03/09/03 08:04
VS.NET2003は4回起動できます。
>>308 どーしてもGUIがいいというなら左側TreeView、右側TabControlを配置してしまう。
フォームがツリーノードクリックイベントをキャッチしたら
対応するTabPageをアクティブに。
当然、タブが表示されてるのが嫌だと思うので、TabControlのY座標をマイナスにして
うまくタブが見えない位置に配置する。どうだ?
>>310 312はマジレスと思うが・・・
>>308 UserControl継承した設定フォームを作って、
TreeNode.Tagに格納するなどして、あとはパネルとかで表示しる
>>326 >>312 のような心理的なことはどうだっていいの
それは自分の判断でしょ、人に聞いても参考にならない
私が聞きたいのは、2002と2003の違いが知りたいの
ここが便利になったとか、2003でないと不都合あるとか
>>328 違いはMSサイトに書いてあるけど、まさか読まないで質問なんてあり得ないよな。
それ見て満足できなきゃ、買えとか買うなとか言ってほしいだけに見える。
そうでなきゃ違いにこだわりすぎる理由はないからな。
もうまじで買った方がいいよ。健康のためにも。
このスレへの迷惑をなくすためにもな
>>332 おれ2002で.NET Framework1.1インスコしたぞ。だめなの?
見たけど、あんまし欲しい機能とか変わってないな
2002でいいか
>>332 なんで2002も持ってないのに、初日に2002買ったおれより詳しいの?
318 名前:310[] 投稿日:03/09/03 02:45 2chにマジレス期待した私がバカでした。 今度くるときは荒らしとしてきます。 さようなら
337 :
デフォルトの名無しさん :03/09/03 16:48
システム時刻を変更したいのですがどうしたらいいのでしょうか? DateTime.Nowは読み取り専用なんで設定できませんでした。 MSDNライブラリ検索してもVBのメソッドしかでてきませんでした。 C#で時刻を変更できるメソッドかプロパティはないんでしょうか?
VBのライブラリ使えばいいじゃん。
>>336 メモリと起動速度だけはちょっとメリットあるかもね
でも2002でNET Framework1.1使える以上余りメリットないね
バージョンアップ見送ります
もうちょっとレベルの高いスレ立てないか?
>>339 2002でNET Framework1.1使えない。
.NET Compact FrameWorkなんですができるんでしょうか?
IntelliSenseが.NET 1.1にも対応しているとか、@IT特集にあった新機能が 魅力的に思えないとかだったら、無理して2003にする必要はないでしょう。 1.1のインストールは、環境さえ満たしてればできますが、 追加されたAPIに完全対応しているのかな? 2003のように使えるならいいのだけど。 あと、OSを再インストールする時に、手間が少しだけなくなることも利点の1つか。 2003は本体を入れるだけで1.1環境になるけど、2002では本体+1.1を入れないといけない。
>>346 おっと、失礼。
1.1をインストールしても、2002では対応はしていないという事ですね。
>>310 1.1を使いたいなら2003へ移行、1.0でいいなら2002のまま。ってことで。
この程度のアップデートで金取るのはMSとコーエーくらいのもんだ。
うみゅ。 WindowsUpdateだともう1.1しか入れてくれないものだから Windows.Formsとかを含んだのだと2002でビルドしたのは配布が面倒なり。
.NETって駄目ね。
あら、そんなことないわよ。
>>345 1.0→1.1でいろいろバグがつぶされてるので1.0はお勧めできんよねー。
所詮2chでえられる知識なんてこんなもんか・・・ やっぱり買うか買わないかは時分できめます。 それじゃあ。
2ちゃんに決めてもらおうとしてる時点で買う資格無いね。 絶対買うなよ。
>>354 あなたの示唆するところではありません。
356 :
デフォルトの名無しさん :03/09/03 22:51
時代はJava。
>>353 すでにリンクなど情報は出てるからもう自分で決めるしかないだろ。
で、釣果のほどは?
363 :
デフォルトの名無しさん :03/09/03 22:58
示唆ってこんな使い方するのか?
痛すぎる…
>>365 だからにせものは消えてください。
しさ 1 【示唆】
(名)スル
〔「じさ」とも〕それとなく物事を示し教えること。
「―を与える」「―に富む話」「政界の腐敗を―する事件」
368 :
デフォルトの名無しさん :03/09/03 23:05
あーん。騙るつもりが名前入れ忘れた(恥
>>367 普通に会話で使いますが?
ニュースとかみない?
イタタタタ
C#より日本語という言語を選択することをお勧めする
310に言い負かされて必死になっている馬鹿がいるスレはここですか?
放置できないあなたも
354 名前:デフォルトの名無しさん[sage] 投稿日:03/09/03 22:26
2ちゃんに決めてもらおうとしてる時点で買う資格無いね。
絶対買うなよ。
355 名前:310[] 投稿日:03/09/03 22:51
>>354 あなたの示唆するところではありません。
クラスAとクラスBがあります。 クラスBにはクラスAにあるButton1.Textに"テスト"を代入するメソッドTestがあります。 しかし、クラスAからこのクラスBのメソッドTestを呼び出してもButton1.Textに"テスト"が代入されません。エラーも出ません。 どうすれば、このメソッドTestを使えるようになるのでしょうか。
383 :
310 ◆IlmTU23eNk :03/09/03 23:18
384 :
デフォルトの名無しさん :03/09/03 23:19
385 :
310 ◆IlmTU23eNk :03/09/03 23:21
387 :
デフォルトの名無しさん :03/09/03 23:24
>>387 それが原因ならコンパイルエラーが出るような気がするが……
コード見ないとなんとも言えないが。
ちなみにプロジェクト内すべてのprivateをpublicに置換しても無理でした。
何でデバッガでステップインしてインスペクトしないの?
空気四でませんでした。無かったことにしてください。
>>380 オブジェクトが違ってたなんてことは決してないよね。
当然だよね。
別インスタンスのフォームのText操作してたりして・・
結局コードが出せなかったか。 何で放置できなかったんだろう、俺。
310がうざいからネタ質問して話題を変えようとしただけなんだけどな。
つ、、釣られたのか(;´д⊂
雑談スレ逝ってくれ
401 :
310(本物) :03/09/04 02:12
放置できない時点であなた達の負けです ↓以後、C#の話題
402 :
デフォルトの名無しさん :03/09/04 02:14
今VC#.NET STD 2002を持っているのですが 2003を買う必要がありますか? 必要があるとしたら何故でしょうか? 1.0と1.1の違いも添えて教えて下さい
2chにマジレス期待した私がバカでした。 今度くるときは荒らしとしてきます。 さようなら
無駄無駄無駄無駄無駄ッ!!
2002で作ったプログラムは配布すると 一般の方は実行できないのでしょうか? よろしくおねがいします。
>>405 twintailは2002(.NET1.0)です。
実行できます。
twintailのソース見たけど なぜそれぞれネームスペースの名前が違うの? CLASS単位で名前変えればいいのに それと、上のレスで2002で作られた場合 面倒なことしなければならないって書いてたけど 何か特別なことしてるの? WUするのは1.1で作られた場合だけでしょ?
>>410 > なぜそれぞれネームスペースの名前が違うの?
作者の趣味だろ?
> WUするのは1.1で作られた場合だけでしょ?
一般に使われている 98, Me, 2000, XP には .NET Framework 1.0 も
初期状態ではインストールされていません。
>>412 なるほどそういうことか。
適切な回答ありがとうございます。
>>411 質問してる人に質問してどうするんですか?と質問してみます。
頼むから初心者スレに逝ってくれ>310
>>417 お、くだすれまだあったんだ。タイトル変わってたから気付かなかった
twintail このソフト作った人すげーよ ソースも公開してくれてるし、まじで神だな これみながら勉強するよ live2chより全然軽いし(・∀・)イイ!
420 :
デフォルトの名無しさん :03/09/04 07:46
C#で時刻を設定できないのでしょうか?
>>420 うせろ!初心者!!すれ違いも甚だしいな
すれ違いなんですか?相談室とありますが? よろしくお願いします。
424 :
デフォルトの名無しさん :03/09/04 08:20
ここはスレタイが微妙すぎる。 どういう人を対象にしてるかわからん。
ふらっとのほうにいってきます。 誘導ありがとうございました。
428 :
デフォルトの名無しさん :03/09/04 10:50
ado.netでExcelファイルに対してSQLのUPDATEステートメントが発行できなかった件ですが、 .netでないほうのただのADOを使うことにより解決したので報告します ADOのほうでは普通にUPDATEステートメントも使うことができました スレ汚しすいませんでした
432 :
デフォルトの名無しさん :03/09/05 14:24
>>308 1度テンプレートを作ってしまえばあとはGUIでサクサクになる方法見つけたよ。
[デザイン編]
1. 左側にTreeViewを配置して設定項目を追加する
2. 右側の設定表示領域にPanelを配置
3. 2.のPanelと同じ領域にTabControlを配置
(PanelとTabControl内のTabPageの領域が同じ位置・サイズになるようにする)
4. 3.のTabControl.VisibleをFalseに設定する
5. 各TabPageにPanelを配置してDockをFillに設定する
6. 5.で配置したPanelの上に設定用のコントロールを配置する
[コード編]
7. TreeViewで項目が選択されたらその項目に対応するTabPageを検索し5.のPanelの参照を取得
8. 7.で取得したPanel.Parentを2.のPanelを設定する(この時点で設定項目が表示される)
9. 前回8.で設定されたPanelのParentを元のTabPageに設定する
(古い設定項目が消える。消さなくてもZオーダの設定だけでよいかもしれない。)
(10. 別のFormのPanelを同様の方法で引っ張ってくることも可能かもしれない。)
433 :
デフォルトの名無しさん :03/09/05 15:00
フォームを区切る横線ってどうやって出すんですか?
>>432 おお、確かにこれなら、デザイン的にもいい感じですね。
つまり、タブにデザインするんだけど、表示上は隠しておいて、
必要になったパネルだけを引っぱってくるという感じですね。
でも、なんというか、ドトネトのGUIコンポーネントって貧弱すぎの
ような気がします。delphiやswingとかなんかもっといろいろ揃って
いるのに。。
MSはドトネトは、あくまで、サーバサイドの技術として売っていこうと
しているのでしょうか?クライアントサイドにももっと力をいれれば、
コンシューマレベルではいっきに普及するのに。
十分リッチクライアントを意識してると思うが…
>>435 全てが中途半端なのが.NETの良いところなんだよ。
>>435 だからLonghornで、だっちゅーの。
>>435 簡単に拡張できるからいいんじゃないの?
オレ的には基本だけ押さえてあれば十分なんだが。
っつーかなにが欲しいんだ?
>>439 そうですね。。
ツリーと表が合体したようなコントロールがほしいです。
よく、メーラのツリー表示機能なんかで使うコントロールです。
あとは、表自体がヘボいので、表の各セルに好きなGUIコンポーネント
をくっ付けられたら文句ないです。
今ある表って、アイコンとかでさえ、自由に表示できないし。。。
あ、ちなみに、ここでいう表ってのはListViewのことです。
>>440 ツリーもリストもあるじゃん。
アイコンだって表示できるけど「自由に表示」ってどういうこと?
基本的に表は表であって、セルにコンポーネントが配置できるほうが特殊だと思う。
やろうと思えばできるし、難しくもないんだけど…
442 :
デフォルトの名無しさん :03/09/05 18:05
>>440 そこら中に沢山コンポが転がってるの使ったらよろし
443 :
デフォルトの名無しさん :03/09/05 18:08
TreeView.ImageList.TransparentColorが無視されるんだけどなんで?
どこってどういうこと? ImageListに背景色Redなビットマップ登録して ImageList.TransParentColorにRedをしていして TreeView.ImageListにImageList1登録して TreeViewやTreeNodenoImageIndexを指定してビットマップ表示すると 背景の赤が抜けなくてそのまま赤く表示されてしまう。
>>445 IDEで設定してるってことね。
そのビットマップの赤ってほんとにRGB=255:0:0なのか?
shdocvwのマネージコード版が欲しい。 HTMLを表示できるRichTextBoxっぽいのでも良いけどさ。
>>448 次のバージョンでサポートされるから1年半ほど待て
450 :
デフォルトの名無しさん :03/09/06 17:01
SDKを使い、テキストエディタでチマチマと練習してます。 とりあえずウィンドウは出せるようになりました。 けれども、cscでコンパイルしたexeをクリックをすると、 プログラム自体は起動するのですが、ウィンドウのバックにDOS窓が出てしまいます。 このDOS窓を出さないようにするには、どうしたらいいんでしょうか? コンパイルオプションで設定するんでしょか。
>>450 /t:winexe を付ける。
csc /t:winexe hoge.cs
>>451 無事、Windowsアプリケーションができました。
ありがとうございますー。
Windowsアプリって実はDOSなんDESか?
>>453 DOSではなくコンソールアプリケーションというアプリの種類だな。
cscの仕様として、/targetオプション(略形式/t)が指定されなかったとき、
デフォルトで/target:exe(コンソールアプリケーション)が指定される、という話。
デフォルトと違うのが欲しいならちゃんと指定してくださいってことだ。
/target:winexeとか/target:libraryとか。一度csc /hを見てみるよろし。
ノ } ゙l、 」′ .,/′ .,ノ _,,y .,v─ーv_ 〕 〕 .| .il゙ 《 ._ .,,l(ノ^ノ ,i(厂 _,,,从vy .,i「 .》;ト-v,|l′ _,ノ゙|.ミ,.゙'=,/┴y/ l ,zll^゙″ ゙ミ .ノ .il|′アll! .>‐〕 \ _>< 《 il|′ フーv,_ .,i″ ||}ーvrリ、 ¨'‐.` { \《 ヽ .゙li ._¨''ーv,,_ .》′ ゙゙ミ| ,r′ } \ ,゙r_ lア' .゙⌒>-vzト .ミノ′ 〕 .゙'=ミ:┐ .「 ./ .^〃 :、_ リ .} ゙\ア' .-- ,,ノ| 、 ゙ミ} :ト ゙^ー、,,,¨ - ''¨.─ :!., リ ノ 〔^ー-v、,,,_,: i゙「 } .,l゙ l! .´゙フ'ーv .,y ] '゙ミ | ,/゙ .ミ;.´.‐ .] ミ, | ノ′ ヽ 〔 ミ } } ′ } { .| .ミ .< 〔 〕 .{ \,_ _》、 .{ .} { ¨^^¨′¨'ー-v-r《
でかいチンコが見えるようなきがするのは気のせいか?
>>456 多分疲れてるんですよ。ゆっくり休養してくださいな。
独習C#とかいうのは買いですか?
ぶあついから?
461 :
デフォルトの名無しさん :03/09/07 18:58
*「せんもんしょ は 買っただけではいみがないぞ ちゃんと装備しないとな」
マジレスすると、それなりに使える内容では?
せっかく買ったんだったら読めよ
466 :
デフォルトの名無しさん :03/09/07 21:55
おれ読んだけどよかったよ、 プログラミング初心者なら買いでは?
VSも買っただけでは意味ないよ
469 :
デフォルトの名無しさん :03/09/08 18:38
TextBoxのEnableがfalseの状態の時に ドロップアンドドラッグ通知を受け取る方法はありますか?
ありますよ
すみません。質問の仕方が悪かったです。 ドロップアンドドラッグ通知を受け取る方法をおしえてください。 あと、追加で質問なのですが、確実に存在するファイルを System.IO.File.Existsで判定しているのにfalseが帰ってきます。 原因と対策をおしえてください。
>>471 File.Existsの方はソースだしたら教えたげる。
>>472 ソースといってもどこからどこまでさらせばいいのかちょっとわからないので
自分なりにまとめた結果を書きます。
1.Form_Loadイベント時に自作の関数(仮にfunc_aとします)を20回ほど呼び出す。
2.func_aでは変数宣言部の最後にFile.Exists(string 引数)とし、ファイルが存在するかチェックする。
3.そのときは正常にfunc_aは終了(return)する。
4.Formにあるボタンをクリック時に指定のファイルを読む。(そのファイルにはファイルの場所が1行事に書いてあります。)
ここではStreamReaderとReadLineを使っています。
5.ReadLineで得た結果をfunc_aの引数として実行する。
6.試しに引数の値がForm_Load時にfunc_aを実行した時と同じものにしても、
ファイルが存在しないとみられる。
となっております。
474 :
デフォルトの名無しさん :03/09/08 20:37
>>473 1)まず
public static void Main() {
System.IO.StreamReader r = new System.IO.StreamReader("読み込みたいファイル");
string s;
while ((s = r.ReadLine()) != null)
Console.WriteLine(file(s).ToString());
}
でtrueが返ってきてるか
2)func_aのFile.Existsの結果をMessageBox.Showで出してみる
つうかfunc_aでFile.Existsをどう使ってるんだ?
だぁ、 Console.WriteLine(File.Exists(s).ToString()); だった。
1)file(s)のところでエラーが出たので、まんまs.ToString()にしました。 結果は読み込んだファイルが1行づつ表示されました。 2)正常に実行される時はtrueですが、うまく行かない時はやはりfalseでした。 File.Exists自体はほんとは使う必要は無いですが、 FileStream fileStr = File.OpenRead( "ファイルから読み込んだ行" )をした時に、 エラーが出てる用なので、確認として使ってます。
1)の結果修正。 読み込んだファイルの行の数だけfalseと表示されました。
>>473 素直にソースうぷ汁
どの部分出したらいいかわかんないんなら関係してる部分すべて
すみません。原因がわかりました。 テキストファイルをオープンする時にEncodingをdefaultにしたら、すんなり通りました。 メッセージボックス表示しても、デバッグ時に確認しても違いが無いから気づきませんでした。 ホントにすみません。 つるし上げという事で、どこかうpロダあったらうpしたいと思います。
つるし上げワロタ
482 :
デフォルトの名無しさん :03/09/10 00:13
DataGridのことで質問です。 プログラムでグリッドのヘッダがクリックされたことを エミュレートしたいのですが、どうすればいいのでしょうか? よろしくお願いします。
>エミュレート
485 :
デフォルトの名無しさん :03/09/10 13:16
ある自作ライブラリで対になったInit(), Done()メソッドがあって Init()を呼び出さずにDone()が呼び出されたら例外を投げたいのですが どの例外を投げるのが適切でしょうか? デバッグ時にバグ検出する為のものではなく ライブラリの仕様にしたいのでAssertは以外がよいです。
>InvalidOperationException >オブジェクトの現在の状態に対して無効なメソッド呼び出しがおこなわれた場合にスローされる例外 とか。
スレ違いかもしれませんが... 型付データセットで、 (type=xs:string)となっているRowのデフォルト値を "String.empty"にしたいのですが。 default=""とかやってみたけどできません。どなたか方法知ってますか?
>>483 レスありがとうございます。
具体的にどう使えばいいのかわかりませんでした。
MouseMoveをInvoke経由で呼び出せばいい、ということはわかったのですが、
ただ呼び出すだけではこの列がクリックされた、という風にイベントを発生させることができません。
もう少しだけヒントいただけないでしょうか?
よろしくお願いします。
491 :
デフォルトの名無しさん :03/09/13 12:28
C#で、コンソールを使って複数のファイルをコンパイルするにはどうすればいいんでしょうか? Javaだと、関連のあるファイルを勝手にコンパイルしてくれたのですが・・・・
>>491 Java、勝手にコンパイルなんてしてくれたっけ?
csc -r:lib1.dll,lib2.dll,lib3.dll file1.cs file2.cs file3.cs
ラベルの描画速度って遅く無いですか? スクロールさせたりすると結構残像が残る。 なにか対処法ありますでしょうか
ラベルの幅を越えた文字列があっても、自動改行されない方法はありますか?
どういう方法ですか?
>>491 >Javaだと、関連のあるファイルを勝手にコンパイルしてくれたのですが・・・・
してくれんぞ。
>>491 > Javaだと、関連のあるファイルを勝手にコンパイルしてくれたのですが・・・・
そもそもどうやってそれが関連あるソースかどうか判断するんだろう?
500 :
デフォルトの名無しさん :03/09/13 21:42
>>498-499 Delphiと間違えてんだろ。
Delphiは名前空間とファイル名が一致するからusesしてるファイルを検索すれば可能。
>>500 ICSharpCode.TextEditor.dllが消えたので
日本語使うとき気持ち悪くならなくなったかなと思ったが
今度はインライン変換できなくなってしもた。
でもすごく進化してていい。
504 :
デフォルトの名無しさん :03/09/15 13:23
Windowsフォームを作っているんですが、メニューの追加やテキストボックスの登録で やたらとソースが長くなりました。 当然他のソースファイルに分割するわけですが、どうもうまく動かない。該当部分を抜き出すと メイン処理がこれで public class MyForm : Form { //コンストラクタ public MyForm() { this.Size = new Size(700, 500); this.Text = "テキストエディタ"; this.Controls.Add(TextBoxBuilder.InitializeTextBox()); { } テキストボックス追加処理がこれです。 class TextBoxBuilder { public RichTextBox textbox = new RichTextBox(); public static Control InitializeTextBox() { return textbox; } }
あ、二つは別々のファイルです。 コンパイルすると、テキストボックス追加処理の四行目、"return textbox;"で 「静的でないフィールド、メソッド、またはプロパティ'TextBoxBuilder.InitializeTextBox' で、 オブジェクト参照が必要です」といったエラーが出ます。 今の自分では、どこが間違っているのかわからなくて困っております。
参照するtextbox変数もstaticにしる
>>506 できました!
何だか基本的な事だったようで、お恥ずかしい・・・・
VS.NET2003で、プラグイン機構を持つWinFormsアプリケーションの 開発で行き詰まってます。 あるメソッドが実行される際、当該メソッド内で呼ばれる他のメソッドの情報を、 実行時に取得したいと思うのですが、方法が思い浮かびません。 具体的に取得したい情報は以下の通りです。 ・メソッド総数 ・各メソッドの親子関係(どのメソッドから呼ばれたか/どのメソッドを呼ぶか) プログレスバーの処理を凝ろうと思っていて、「〜〜を処理中(2/5)」というように 処理総数と既処理数を表示したり、処理が階層構造をもつ場合に子処理の内容を 表示したり(例えば、タスク「インストール」の子処理として「ファイル**をコピー中」と 表示するなど)したいのですが、その際に、メソッドの実行計画を取得したいのです。 また、これらの情報をロギングにも流用したいと思うのですが、log4netなどの ロギングフレームワークとの連携についても、頭を悩ませております。 理想としては、メソッド名や処理内容の説明などはXMLドキュメントを、 ロギングに関してはlog4netをそれぞれ利用・流用し、開発者は各クラス・メソッドの先頭に 属性を設定する程度の手軽さで、プログレスUIへの詳細情報の提供とロギング機能を 同時に享受できるようにしたいのです。 こういった処理には定石があるような気がするのですが、探せど見つからず、という状況が 続いております。どなたかご教授いただければ幸いです。
>>508 仕事でやってることならば、2chで聞かずにfjとかで聞けよ。
ちょいと聞きたいんだが、PropertyGridで表示させる プロパティの内容を動的に変更することってできるのか? VS.NETのヘルプを見ると、GridItemを実装して云々、という ようなことがほのめかされているんだが、よくわからん。
すいません。自己解決しました
うーん・・・なんか使えないフォントが多い GDI+だとしょうがないのかな?
エクスプローラでファイル一覧を表示するときに、左側にアイコンが出ますが、 これを拡張子ごとに他のアイコンに変更したいのですが、やったことある方いらっ しゃいますか?
514 :
デフォルトの名無しさん :03/09/18 07:03
VC#でフォームプログラム作ってる方はフォームのコントロールの配置は デザイナでやってますか?自分でコード書いてますか?
515 :
デフォルトの名無しさん :03/09/18 07:07
>>514 そんなにデザイナは使い物にならないのか?
ってあーもーいつまでこの名前使ってるんだか。
どこかにC#(というか.NET)の正規表現の詳しい説明なあい? 普通のと少し違うよね?
ごめんなさい 私が馬鹿でした 人間やめます
>>521 うん、ごめん
早とちりだったよ
いまヘルプみて自分の愚かさがわかったtt
>>523 エクスプローラの質問ならPC初心者板あたり。
>>524 すいません、説明が足りませんでした、プログラムから制御したいんです。
書き込み中に何度も、ぞぬたんが落ちたので、何度も書き直していて、そのことを
書くのを忘れていました。(^^;
>511 騙ってんじゃねぇぞゴルア。スルーされたじゃねぇかよ。 ちなみに自己解決したならしたで、どうやったかを まとめるのが当たり前だと俺は思ってるぞ。
//表示がずれてしまいます。誰か助けてください。 public class Form1 : Form { protected override void OnPaint(PaintEventArgs e) { base.OnPaint (e); string s = @" ┏━━━ / |━━━━━┓ ┗┳┳━ |_| ━━━┳┳┛ ┃┃ / ヽ ┃┃ ┏┻┻ |======| ━━┻┻┓ ┗┳┳ ヽ__ ¶_ ノ ━━┳┳┛ "; e.Graphics.DrawString(s, new Font("MS Pゴシック", 12), new SolidBrush(Color.Black), 0,0); } public static void Main(){ Application.Run(new Form1()); } }
>>529 TextBoxに表示するとずれません。
531 :
デフォルトの名無しさん :03/09/18 11:11
>>530 それMS UI Gothicだからじゃねーの?
巨大なチンコAAを表示してどうするつもりだ?
>>532 あんなもんおれのティンコと比べたら大した事無いよ
>>528 MS Pゴシックはフォントサイズによってずれます。
そもそもプロポーショナルフォントでAA書く時点で間違い。 2chがそうなんだけどね。
537 :
デフォルトの名無しさん :03/09/18 18:02
フォームの×ボタンを押したときの処理は、 どのようにすればいいのですか?
private void Form_Closing(object sender, System.EventArgs e) だと、処理してくれないんだけど・・・・ 間違ってますか?
>>539 CancelEventArgsだよ
それともイベントが発生しないと言うこと?
もしかして、Formにタブコントロール置いてる?
>>539 で、そのメソッドをForm.Closingイベントに追加したのかね。
つかデザインのプロパティのイベントのClosingをダブルクリックするのが一番早いけどな。
private void OnPaint(object sender, System.Windows.Forms.PaintEventArgs e) { Graphics g = e.Graphics; Bitmap bitm = new Bitmap( ClientRectangle.Width, ClientRectangle.Height ); Graphics buffer = Graphics.FromImage( bitm ); paint( buffer );//実際の描画処理 g.DrawImage( bitm, 0, 0 ); } とやったときに、最後の g.DrawImage( bitm, 0, 0 );で描画したいのですが、 paint関数ないでの処理一つ一つで描画されてしまいます。 どこがいけないのでしょうか。
>>540 CancelEventArgsにするとエラー出ます。
閉じるボタンを押したときにデーターベースの更新処理をしたいんだけど、
イベントが発生してないみたいです。
タブコントロールはおいてません。
>>541 フォームの×ボタンをダブルクリックするとLoadイベントに
なってしまいます。
メインフォームからボタンを押して、このフォームを開いてるんですが、
それって関係ないですよね?
>>543 > CancelEventArgsにするとエラー出ます
じゃ何かイベント登録部分が間違ってる
> フォームの×ボタンをダブルクリックするとLoadイベントに
そうじゃなく、プロパティタブに雷マークがあるからそこクリックするとイベント一覧が出る
>>544 感謝です。
雷マークのclosingダブルクリックで出来た所に
コード書いたら処理してくれました。
自分で書いたコードと同じだと思うんだけど、
何で出来なかったんだろう?
ありがとうございました。
>>545 イベントの登録だろ。
普段は畳まれてるinitializeComponentメソッドのFormの部分でも観察してみ。
>>546 なるほど。
this.Closing += new System.ComponentModel.CancelEventHandler(this.Form_Closing);
ってのがイベントの登録なのね。
ついでにもうひとつ教えてほしいんだけど、
処理中にポインタを砂時計にすることって可能なんですか?
Cursor = Cursors.WaitCursor というかコレくらいは検索すれ
>>548 検索に疲れ、つい質問してしまった。
ごめんなさい。
今度は集計で迷う予定なので、
その時はまた教えてくださいね。
スレ進行が止まっているのなら
>>542 について一緒に考えて下さい。
>>550 this.Paint += new System.Windows.Forms.PaintEventHandler(this.Form1_Paint);
でイベント追加して
private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) に542のコードを書いて、
private void paint(Graphics g)に適当に時間を空けながら4角形4つ書くコードを書いてみたんだが、
4つ全部書き終わった後で描画されてますよ?
具体的にpaint()ってナニやってるの?
072
中間報告 記念すべきこのスレ立てからの姉妹サイトのレス伸び率 1 デフォルトの名無しさん 03/09/01 22:10 【C♯初心者】今から始めるC♯ Part01 436レス ふらっとC♯(Part4) 207レス C♯相談室 Part11 252レス
554 :
デフォルトの名無しさん :03/09/20 17:19
MDIの子ウィンドウを親ウィンドウのクライアント領域の外に持っていくと スクロールバーが出るじゃないですか。 あれを出さないようにするにはどうすればいいんでしょう? AutoScrollをfalseにしても駄目みたいだし。
555 :
誰か知らない? :03/09/21 12:17
.NET Frameworkで作ったDLLの中身ってオブジェクトブラウザで見えちゃいますよね。 自分の作ったDLLの中を見られたくないんですけど、どうすればいいんでしょう?
>>555 Obfuscatorを使うしか手はない。けどpublicメンバだけはどうしようもない。
マジですか
見られても理解できないコードを書けばok
クラス名とかは乱数で作成
インターネットショートカットの、プロパティのところの「表示回数」を取得する方法ってありますか?
なんかいらいらしてたけど、オナニーしたら気分さっぱり。
562 :
デフォルトの名無しさん :03/09/22 01:22
C#で作ったプログラムって空のウインドウだけで起動直後のメモリ使用量が タスクマネージャで見ると10,260Kもあるんだけど。いったん最小化して元に 戻すと2,396Kに減ったけど、どうにかならんもんか。
563 :
デフォルトの名無しさん :03/09/22 01:45
ファイルを開くとき、その中間に入ってフィルターでいじるようなことは簡単に出来ますか? ファイルA→→プログラムB→→プログラムC このファイルを開くときBでヘッダを書き換えてそれをCに渡す 実際にはファイル自体は書き換えられていない状態で、Cがその部分を読むときだけフィルターされる感じです。
564 :
デフォルトの名無しさん :03/09/23 14:48
現在のウィンドウをBitmapに保存するにはどうすればいいでしょうか。 bmpファイルではなくSystem.Drawing.Bitmapという意味です。
すいません。自己解決しました。
今後自己解決をした奴は、解決方法を書くこと。知識の共有という奴ですな。 教えてもらって解決した場合も、結果レポートを書くとなおよし。
568 :
デフォルトの名無しさん :03/09/23 16:55
この手のスレで他人を騙るのはいい加減無しにしないか?別に面白くもないし。 初歩的な質問であったにせよ、質問してる本人は真面目に質問してるんだから。 あんたのスキルがどの程度かしらんが、あんたも初心者の頃があっただろ。 人に質問して助けてもらったことが生涯で一度もなかったとでも? つまらん遊びでスレを費やすな。
>>569 いえ、違います。もうどうでもいいです。ほっといて下さい
573 :
デフォルトの名無しさん :03/09/23 18:34
ほんとにDel厨には困ったものだ
>>570-572 おまえら会社ではよっぽどコケにされてるんだろうな
いやただのヒッキーか学生か?
とにかく、荒らしてる奴は一体何がしたいんですか?
日ごろの鬱憤をここで晴らそうとしないでください。
初心者を虐めることで自尊心を補えると勘違いしないでください。
わたしが初心者とわかると急にえらそうになって、
そんなに初心者いじめてる奴はたいしたスキルもない香具師ばかり
上級者や、充実してるプログラマはそんなことはしない
今からでも遅くなりません。初心者にやさしくして、ここを良スレにするように心がけてください
まず、初心者である私を育成してください。
プリンセスメーカーやたまごっちやったことありますか?
あなた達の育成の仕方で私の今後の態度も変わります。
いいたいことはこれだけです。
もう二度と同じことはいいません。これが最後の忠告です。
あなたに米粒ほどの良心があることを祈っています
プログラマって友達いないのって本当ですか? 2chで人とコミュニケーションしてるつもりになってるのは本当ですか? キモイです。氏んでください
>>571 しつこいですね。
とりあえず解決しました。
Win32APIを使わずにやりたかったのでGraphics操作時にBitmapを対象に行うようにし、
そのBitmapのバックアップをグローバル変数で保存しておくという形にしました。
返事くださった方々ありがとうございました。
>>576 バカみてえな質問してんじゃねええよ!!クソが!!
初心者スレ逝け!!
ついでにその解決法( ・,_ゝ・)プークス
578 :
デフォルトの名無しさん :03/09/23 18:49
>>574 文章の感じが【C♯初心者】今から始めるC♯ Part01 の1氏と似ているが、
同一人物?真似ているだけの愉快犯なら、あんたも相当危ないぞ。
>>568 お前2ちゃんに来ない方がいいよ。一番ダメなタイプ。
>578 コピペにマジレスw あなたは恥ずかしいインターネットでつねwwww
>>578 どうもこのスレを潰して【C♯初心者】今から始めるC♯ Part01 をメインにしたいらしい。
中間報告もその現れ。
>>568 スキル:始めたばかり、超初心者
職業:ひきこもり
友達:0人
彼女いない暦:32年
レスした理由:
ああいうやつは、本当に許せないんですよ。
ぼくはバカなので
>>564 の質問には答えられませんが
常識だけは知っています。荒らしは許せんです。はい。
>あなた達の育成の仕方で私の今後の態度も変わります。 他人の言葉でくるくる変わってんじゃねーよ。
584 :
デフォルトの名無しさん :03/09/23 18:56
>>581 その企みは無駄な努力だと思うけど。
アラシはみんなむこう、真面目に質問したい人はこっちという分担にすれば
みんな納得すると思うが。
惜しいな、結構いいセン行っているんだが。
おまえら釣られすぎ、荒らしはスルーしろよ 何年2chやってんだよ、まったく
プログラマは大きく分けて2タイプいます。 潔癖、完璧主義: 根っからのプログラマー でも、それ以外は全然ダメダメ君 リーダーシップ取って人をまとめたりするのは苦手 顧客のニーズを把握するのが苦手(人の話し聞くの苦手だから) 完璧主義の落ちこぼれ: 口ではでかいこと言うけど ちょっと、つまずくとすぐやる気を無くしてしまう 基本的に完璧主義なので、一回挫折するとなかなか立ち直れない そして、ひきこもる
この手のスレで他人を騙るのはいい加減無しにしないか?別に面白くもないし。 初歩的な質問であったにせよ、質問してる本人は真面目に質問してるんだから。 あんたのスキルがどの程度かしらんが、あんたも初心者の頃があっただろ。 人に質問して助けてもらったことが生涯で一度もなかったとでも? つまらん遊びでスレを費やすな。
590 :
デフォルトの名無しさん :03/09/23 19:12
今無性に興奮しています。何かいいエロビデないですか?
592 :
デフォルトの名無しさん :03/09/23 19:14
593 :
デフォルトの名無しさん :03/09/23 19:14
そういや今から始めるC♯がその後伸びていないが、1氏はやはりこちらで お仕事中か?
594 :
デフォルトの名無しさん :03/09/23 19:15
595 :
デフォルトの名無しさん :03/09/23 19:18
597 :
デフォルトの名無しさん :03/09/23 19:21
30レス伸ばしてやったぞ、感謝しろ
598 :
デフォルトの名無しさん :03/09/23 19:22
>>598 アリガd
これからビデオ屋逝ってきまつ
お取り込み厨悪いんですが、質問させてください。 これからプログラミング勉強したいと思っておりまして Delphiなんかいいのではと思っているのですが まだ、店で売られていますでしょうか?
暇だから肛門にえんぴつ入れてみよっと
あなたらがしたことで私は忘れるしません
>>600 勉強程度ならダウンロード版Personalで十分だろ。
すいません、解決しました。 解決したとき 射精くらい気持ちよかったです。
>563 せっかく標準入出力が備わってるんだからパイプで渡せばいいんとちゃう? C:\>TYPE ファイルA|プログラムB|プログラムC
すいません。説明載ってました。スレ汚し失礼しました
モマエらどうせまともに答える気ないんだろ? もういいよ!自分で調べるよ!!
>>607-610 まじでうざい奴らだな
確かにおれは自分で調べる気もないし
質問してるのに為口だけどさ、邪魔することはないだろ
誰か早く答えてくれよ。このままじゃおれの質問シカトされっだろ?
>>606
>>612 もう少し言葉の勉強からはじめた方がいいですね
いくら2chでも礼儀は必要です
よってあなたの質問は放置します。終了。
最悪だ・・・最悪のタイミングで質問してもうた。 つぅかなんでこの板、ID表示してないのよ。 まじでNUnit使ってる人、教えて欲しい。困ってるので。
615 :
デフォルトの名無しさん :03/09/24 00:49
>>606 スマン、NUnitなんてもの使う程、高度なプログラム作ってないだよ。
@ITの会議室で質問したほうがよくないか?そんなに賑わっている訳じゃ
ないが、登録制だから粘着荒らし君もいないし。
我々が荒らし君を引きつけている間に早く行くんだ!!
>>615 つぅかわからないならレスするな糞DQN会社クビになったやつ
>>615 ありがとう、悲しみを怒りに変えて生きるよ!
おまえたちがやったことは忘れないからな
C#にも、テスティングフレームワークがあったのか。 探せばあるだろうと思ってたけど、面倒だから探さなかったよ。 日本語の解説もあるし、ちょうど新しいコード書くところだから、 ためしに使ってみるかな。
C#ではAttributeのおかげでグッド
むしろウザい。Test継承してtestXXXでいいやん。
>>606 可愛そうになってきた。
このURL見たところ別にDLLにする必要は無いと思うんだが。
>>623 ここの説明だとテストされる側をdllで出力されるようにビルドして
テスターからはそのdllを参照し、メソッドを呼び出すという仕組み。
テストされる側をexeで出力するとテスターからexeを参照しようとしても
dllやcomじゃないと参照できないと怒られる。まぁ当然だけど。
NUnitはテスターのdllを呼び出し、テスターはテストされる側を参照設定しているわけで テスターコンパイル時にdllにテストされる側のうちの必要なクラス(テストされるクラス)は 組み込まれテストされる側がどんなファイルにしろNUnitが読み込むのはテスターdllなわけで 別に大丈夫じゃないんかと
JAVAにすがろうとする、メーカー対策だったりして
627 :
デフォルトの名無しさん :03/09/24 18:05
double型をint型に変換すると、小数点以下切り捨てられてしまいますが、 小数点以下四捨五入することは可能ですか?
628 :
デフォルトの名無しさん :03/09/24 18:09
>>627 0.5を足して、少数を切り捨てると四捨五入になるよ。
(探せば少数を丸める関数とかあると思うけどね)
いまさら築いた激しく誤爆。ゴメソ
>>630 大丈夫。このスレでJavaなんて単語出してもスルーされるだけだから。
>>633 君のは誤答だ。間違った道に引きずり込もうとする罠だな。
正直628の方法でいいじゃん。
>>634-636 いや、Round って偶数丸めしてくれるだろ。
単純な四捨五入よりも偶数丸めの方が平均誤差少なくなるし。
単純な四捨五入って 0.5 とかのど真ん中の値を常に切り上げちゃうんだけど、
偶数丸目って 0.5 の場合に限り、偶数になるように丸める
例えば、
3.5 → 4 (誤差 0.5)
4.5 → 4 (誤差 -0.5)
5.5 → 6 (誤差 0.5)
6.5 → 6 (誤差 -0.5)
平均すると誤差がなくなるってこと。
>>637 いや、そんなことはみんな分かってると思うぞw
業務系(特にお金扱う場合とか)は、「四捨五入」って言われたら
誤差が多かろうが少なかろうが、それに従わないと。
639 :
デフォルトの名無しさん :03/09/25 15:33
コンポーネント作成について詳しく説明した書籍ってないですか?
640 :
デフォルトの名無しさん :03/09/25 17:20
済みません。もうすこしで自己解決できそうです。 解決できたらこのスレで大々的に発表する予定です。
642 :
デフォルトの名無しさん :03/09/25 22:48
573 :デフォルトの名無しさん :03/09/23 18:34 ほんとにDel厨には困ったものだ とあるが、なにをどうお願いしたいのだろう。
643 :
デフォルトの名無しさん :03/09/26 00:22
644 :
デフォルトの名無しさん :03/09/26 00:56
645 :
デフォルトの名無しさん :03/09/26 01:04
>>644 なんだ、Delスレにみんなで殴り込んでくれ、というのではないのか。
646 :
デフォルトの名無しさん :03/09/26 21:42
>>646 Delphiスレでやれよ。C#スレを荒らすためにやっているとしか思えん。
さすが信者
650 :
デフォルトの名無しさん :03/09/27 07:35
xmlに設定をシリアライズする時に シリアライズするクラスのメンバが変わるとエラーになるんですが 回避できないでしょうか?
INIの方がサイズ小さいし、そんなことで困らない
シンプルいずベストですね。
>650 シリアライズって便利だけど、過去ログに、 ・2次(以上)に影響のあるクラスを多数受け持つと実情に差し障りがあるくらい遅くなる ・メンバ変更されると読めない。(>650) じゃ、Compositeパターンで多数のCompositeクラスが発生すると考えた時にはどんな設計がベター? ひとりよがりではつまらないので後フォロー宜。 1.LeafとCompositeから共通に呼ばれるNode(Data)クラス(IEnumerableインターフェイス実装) 2.Nodeには呼ばれ先を記述(Keyプロパティ) 3.Nodeのみシリアライズ。デシリアライズ時に呼ばれ先を見て適宜に割振る。 んー、ちょっと結合度が高くなるかなぁ? 要はNodeが設計変更されにくくなれば良いんだけど。 扱うデータは既に決定してる業務系って特殊なのかな。
多数のCompositeクラス→多数のCompositeオブジェクト Compositeクラスは一応ひとつだけって想定で。
655 :
デフォルトの名無しさん :03/09/27 15:44
WebBrowserコントロールで画像は読み込ませないようにする(テキストのみのブラウザ)にする 方法を調べているのですが、ぜんぜん糸口が見えず苦悩しております。 どなたかお知恵を頂けないでしょうか?
デシリアライズをReflectionでFieldごとにExceptionトラップすれば、 メンバ増えても、一応読みこみはできるはず。
あげ
みなさんはどの程度のソフトで金取れるとおもっていますか?
秀丸くらいじゃないと
MS-Officeくらいが最低ラインかな。
ロジックよりもコンテンツ勝負だろ。 単にデータ表示するだけのソフトでもコンテンツ次第では大金になる。
大金か?
ナンバー図予想ソフト
totoならある程度の精度で予想できるんじゃないか?
2回に一回当たったらかってやる。
669 :
デフォルトの名無しさん :03/09/29 18:31
会社の方針でC#の勉強始めました。 元々VB使ってたので、VB.NETの方が馴染み易かったんだけど... やっは今でもC>VBなのかなぁ?バイトコードも全く違うのかなぁ?
>>669 C#の前にまず.NETFrameworkの勉強をした方がいいかも。
あとC#はC/C++よりJavaに近いよ、文法的に。
671 :
デフォルトの名無しさん :03/09/29 18:49
>>670 レスサンクスです。
CASE文でBREAk必須にはビクーリしました。
JAVAが圧倒的に有望視されてますが、一般の会社の業務アプリ
にはMS系がいいと思うのですが。結局LINUXにしてもOS導入が
安く済んでも運用コストが高くつくと思うんですが。プリンタドライバ
一つとっても充実されてないし...
最近のLinuxはWinと比べても全然安くないって話じゃなかったか?
JavaはJspとしては確かに地位を築いてるけど、 クライアントPCのアプリケーションにはさっぱりだからねぇ。
なんだかんだいってC#はよくできてると思う。 ところでフォームから新しいフォームを作った時に、 特定のイベントを強制的に実行させる方法ってありますか? 例えば元のフォームをクリックした時に新しいフォームを作り、 そのフォームの移動イベントを発動させると言ったモノです。 MouseDownイベントなどを使うのではなく、Windowsに認識させたいです。
MSの言い分を鵜呑みにするとWindowsの方が低コストだそうだ
VB.NETネットでもC#.NETでも同じ。 慣れてる方を使うのが賢い。
>>674 > ところでフォームから新しいフォームを作った時に、
がインスタンスを作ったときを指すなら、デフォルトコンストラクタにそのイベントで実行されるメソッドを追加。
Show()/ShowDialog()時なら、Form_Loadメソッドにそのイベントで以下略。
イベントはあくまで特定の状態になったときに通知されるもので、
実際にはイベントに関連づけられた普通のメソッドが実行されるって前提はOK?
Javaの遅さって何?
681 :
デフォルトの名無しさん :03/09/29 20:36
OOPLだから遅いんだよ(*^-^*)
682 :
デフォルトの名無しさん :03/09/29 21:02
Formを継承して、くつったクラスで、Show()を呼び出されないように、 private new void Show() とオーバーライドしたのだけど、やはり、form.Show()で表示されてしまいます。 なにか考えかたが間違ってますか?
間違ってます。 それじゃオーバーライドしてません。
684 :
デフォルトの名無しさん :03/09/29 21:04
オーバー来度とオーバーロードの違いは?
なに?
686 :
デフォルトの名無しさん :03/09/29 21:07
> Formを継承して、くつったクラスで、Show()を呼び出されないように そもそも設計自体おかしい感じ
>>684 オーバーライド = 上書き
継承もとクラスのメソッドの挙動を書き換える。
オーバーロード = 予定された以上に使う
同じ名前を複数のメソッドで使いまわす。
>>686 出来ない
"オーバーライド"じゃなくて"隠蔽"だ、って言いたいんだろ。 とはいえ私も682の回答はできないが。 私の場合は取り敢えず必要なメソッドを持ったラッパクラスを作った。
691 :
デフォルトの名無しさん :03/09/29 21:15
>>687 モーダルでしか使われないウインドウだから、使いかた間違わないように
Show()のほうはつぶしておこうと思ったのだけど。。。
わかんなくなってきたので分けて考えたいと思います。 普通ウィンドウを移動しようとすると、ウィンドウの中身は動かずに輪郭だけ動いて 決定後にウィンドウの中身が描画されますよね。(OSの設定次第だけど) フォームのコントロールバー以外の所をクリック、ドラッグドロップしたときに こういう状態にすることは可能ですか?
protected override Show() { }
>>692 Win32だとWM_NCHITTESTなんだけどなぁ。
まだ.NETは細かいところに手が届くまでには行かないよねぇ。
俺も少し前にプログラム側でヘルプモード(マウスカーソルが?)にしたくてもやり方わからなかったし。
>>693 Showはvirtual指定されてないみたいだから無理じゃないの?
それ以前にoverrideでアクセス修飾子は変えられないし。
>>691 フォームをモーダルで使うかモードレスで使うかは使う側の勝手なので
それに依存した動作を行うべきではない。
とか思うのはちょっと原理主義かな?
>>689 あーなんかわかったような気がする。ありがとう。
ウィンドウスタイルをNoneのままタスクバーに表示させたいのですが、 アイコンが表示されないので、子フォームを作り、透明度を100%にし 擬似的にそう見せようと思いました。 が、やはり動作がしっくりきません。 なにかいい方法があるでしょうか
データグリッドで文字をパスワードキャラ(*など)として表示させるにはどうすればいいのでしょうか?
「*」としか見えない項目をグリッド表示する意味はあるのかと小一時間
自己解決しますた。失礼しますた
自分で試したところうまくいきました。スレ汚し失礼しました
Del厨なのかなぁ
>>709 騙らないでくれ。
Excelはもちろん試して駄目。
VB6は環境がないので試せないので書かせてもらった。
それでも質問するなというのか。
713 :
デフォルトの名無しさん :03/10/01 08:32
ったく、最近の質問房は礼儀ってもんがなっちゃいねえな。 質問の最後の行には 「答えろPGども」 だろ?
714 :
デフォルトの名無しさん :03/10/01 12:54
答えろプロゲーマーども
さらにすぐにレスがつかないからと言ってやたらと上げまくる奴が特にウザイ。
>695 これみたいな、「.NETではまだ細かい所に手が届かない」ってのは 次のVisualStudioのリリースとかで解決されたりするのかな? 放置? MSの方針?
>>716 .net framework を慎重に設計したいからでしょう。
>>716 「次の」っていうか、「次以降の」だろうな。
次でエンタープライズ関係、Longhornに乗っかるヤツでクライアント方面の強化が図られるかと。
過去のしがらみを断ち切るため、無理にAPIとの相性は考慮してないのでしょう。
720 :
デフォルトの名無しさん :03/10/01 23:58
言い訳必死w
煽り必死w
722 :
デフォルトの名無しさん :03/10/02 01:26
>>721 オ マ エ ガ ナーーーーーーーー!!!!!!
WM_NCHITTESTなら、対応できるハズですが。
725 :
デフォルトの名無しさん :03/10/02 02:36
どこがw
どうせレスするなら反論しろよ(w
>>725 明らかにいいとこだからさすがにちょっと無理があるよ とマジレス
反論できないとか。
730 :
デフォルトの名無しさん :03/10/02 07:21
.NET厨必死だなw
将来.NETがWin32から切り離されたときに動かなくなるんじゃないか?
MSは.NETをほかのプラットホームにも、もって行こうって、 本気では考えてないんじゃないのかな? Winに依存した部分が多すぎるもん。
一応乗っけることまではするだろうなぁ。 IEのようにね。要はアリバイ作りにすぎん罠。
質問。 C#って、名前空間の中にクラスを書いて、その中に関数を書く訳だけれど これって、宣言部と実環境とかに分けて書くことは出来ないの? 関数のスタート地点にタブが2つ入っちゃってやりにくいです。 あと、C++ユーザの俺に、C#の良さを教えてください。 仕事に絡んでないせいもあって、どんどん勉強する気が失せています。 オラに元気を(ry
C#を使ってみて、そのよさが分からないのならC++のままの方がいいと思う。
>>734 C++なら名前空間がネストになるからタブはもっと入ると思うが?
Delphi使えば一発で良さが分かる。
>>734 俺も最初の頃はタブが2つイヤーンだったがいつのまにか慣れてしまった。
{
}
にも慣れたし。
{ } はどれとどれがセットなのか分かりづらいな。 VBからC#に移行して、もうVBに戻るつもりは無いほど好きなんだけど、 ことこの一点に関してはVBの方が一目で分かって好きだったな。 Sub If For Next End If End Sub それともコメントでも付ければいいのか。 { // Namespace { // Class } // End Class } // End Namespace せめてエディタのタブ列に薄線でも入ってれば分かりやすかったんだけども。
MSILについて勉強したいんですが、何かよい情報源はないでしょうか。 CLRはスタックありの極普通のプロセッサとそれ程変わりませんが、 如何せん情報が少なすぎます。みなさんどうやって勉強されてますか? sscliを解析するしかないのかな?それともildasmとバイナリを 見比べて覚えていくもの??
あと、意外と便利なのがWebMatrix ClassBrowserについてるIL Reference。
>>741 あ、これなんかよさゲですね。
これ買ってみます。どうもありがとうございます。
ホントはマイクロソフトにはVMに関してプロセッサメーカみたいな
かちっとしたドキュメントを期待したいところですが、
IL自体がバージョンごとに微妙に違うっぽいところから
そういうのはもう少し時間が経たないとだめかもしれないですね。
>>742 WebMatrix初めて入れて使ってみましたが、これ(・∀・)イイ!!です
これなら.NETFrameworkの逆汗もできてすばらしいです。
あとはオブジェクトファイル形式とマシン語との対応表かなあ。
ひとつ疑問なのですが、ILメソッドごとに割り当てられる evaluation stackや引数、ローカル変数っていうのは、 実メモリ領域としては、スレッド実行コンテキストの スタックに確保されるのかな?それとも、ヒープ領域なんでしょうか? 自分としては、スタックフレームが ...|ILメソッド用スタック|CLRエンジン用スタック|ILメソッド用スタック|... っていう感じにスタック領域を使ってるのかなと思ってるのですが。。。 教えて、偉い人。
>>739 プログラミングの作法として、括弧の対応が分からなくなるほど
長い関数は書くなってのがある。あと、ちょっと長めになっちゃって
括弧の対応が分かりにくいって思ったら、コメントを入れておくもの。
}//if(a == 0)
}//for(k
}//for(j
}//for(i
}//MethodName
}//class ClassName
}//namespace Name
とか。
>>746 あ、このドキュメントいいかもです。サンクス子です。
なるほど。 作法としては分かるのですが、Namespace, Class, Methodの3つの閉じカッコはどうして も出てくるわけで、この時点でもう見難いなと思っちゃうんです。 で、半ば冗談で書いた方法が実際に使われているのですね。 この辺はエディタ側でやってくれればいいのにと思うのです。 自動的にコメントを入れられたらうっとうしいから、}を含む行に移動 したらどこかに対応する{行を参照表示してくれるとか。Excelみたいに カッコを色別で分けてくれるだけでもいいや。 早々に消してしまったけど、C# Builderを試用したときにこれはいいなと思った機能 があった。タブ文字表示だったか、タブ列に縦の補助線表示だったか。 ああいうのを取り入れてほしいなと思いつつ、アドバイスいただいた方法でしのぎます。 ありがとうございました。
>>749 1ファイル1クラスにすれば Namespace と Class の括弧は明白になるんだけどな。
Method はさっきも書いたが、1画面に収まらなくなったら処理を分けて、
極力括弧の対応付く長さにする。
自動でコメント付けるのは流石にやめてほしいなぁ。
begin end最強説
lispの鬼のような括弧、最強
VS.NETは{、}を入力すると対応する括弧を強調表示してくれるはずだが。 対応する括弧が画面外にあってわからないことも良くあるが、それは俺のコーディングスタイルが悪いだけだしな。
>>744 16進数との対応表ならSSCLIのclr/src/inc/opcode.def
756 :
デフォルトの名無しさん :03/10/04 22:17
http://sourceforge.jp/softwaremap/trove_list.php?form_cat=160 1 146 C
2 119 C++
3 90 Java
4 55 PHP
5 44 Ruby
6 32 Perl
7 24 Delphi/Kylix
8 21 Other
9 17 Assembly
10 16 Python
11 13 Objective C <--------C++に敗北して廃棄状態
12 12 C# <--------超負け組み
13 7 Unix Shell
14 5 Tcl
15 5 Lisp
16 4 Visual Basic <--------廃棄処分
低レベルな言語順ですねw
dataGridでEnterを押したときに、textBoxに移動したいのですが、 dataGridのKeyDownイベントに if(e.KeyCode == keys.Enter) { textBox.Forcus() } とやっても、イベント発生しません。 どうすればいいのでしょうか?
すいません、自己解決しますた。
>>758 とりあえずフォーカスのつづりが違うが、そんなオチでは
あるまいな。
ふらっとc#はなくなったのですか? ではこちらで質問させて頂きます。 for(;;) { for(;;) { if() { break; } } } このような2重のforループ文の中でのif文で真だと判定してbreakで 飛びたいのですが、1つだけでなく、2重のforループ文から一気に外へ飛びたいのですが、 何かいい方法は無いのでしょうか? このような場合は、goto文を使うのが良いのでしょうか?(c#にあったかな?) それとも、今回私は2次元の配列を調査するために2重のforループ文を使用してる訳ですが、 こう言う場合は、例えば10×10の配列を100要素の一次元の配列に変換して 一重のforループ文に書き直すのが良いスタイルなのでしょうか? ご意見お聞かせ下さい。
それと最近良く聞くフレームワークって要するにライブラリのことなのでしょうか?
自己解決してません。
>>760 そんなオチではありません。
自分でhelpを探してるうちにいい情報が見つかったので一応報告しておきます。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー class Test { static void Main(string[] args) { string[,] table = { {"red", "blue", "green"}, {"Monday", "Wednesday", "Friday"} }; foreach (string str in args) { int row, colm; for (row = 0; row <= 1; ++row) { for (colm = 0; colm <= 2; ++colm) { if (str == table[row,colm]) { goto done; } } } Console.WriteLine("{0} not found", str); continue; done: Console.WriteLine("Found {0} at [{1}][{2}]", str, row, colm); } } }goto ステートメントを使って、入れ子になったスコープの外側に制御を移します。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー どうやらgoto文はc#、オブジェクト指向の時代になっても有用なようですね。 c#のhelpでも2重のforループ文から抜け出す例としてgoto文の利用例があるわけですからね。 やはり2重のforループ文から抜け出すのはこのスタイルが1番有効な訳ですね。 もし、もっと良いスタイルとかあったらお聞かせ下さい。
break とか continue などをコンパイルすると、結局は goto に置き換わってるんだけどね。
>>764 まあ、C# でも switch 文の中と多重ループ抜けの時には goto 使う。
goto 使いたくなかったら、内側のループを戻り値 bool の関数にして、
for(;;)
{
if(!InnerLoop())
break;
}
>>764 766 のようにするのが推奨なんだが
結果として再利用性のかけらも無いループのためだけのメソッドが出来上がったりしたらかえって可読性が下がって本末転倒
リファクタリングの本とかでも、たまにリファクタリング前より糞なコードが出来上がってたりして萎える
名前つき break/continue があれば一番いいんだが、C# には取り入れられないのかな
>>766 ,767
この推奨方式って、3重ループ以上の時はどうすんの?
>>768 ループの数だけ関数化。
まあ、面倒だし、多重ループ抜けには goto 使っていいよ。
例外投げて脱出に決まってんだろ。 多重ループどころか関数の多重呼び出しすら好きなだけ抜けられる優れものだ。
>>770 まあ、釣りだと思うが、
例外を意図的に起こしちゃ駄目だって。
770ではないが、
>>772 の方が意味わからん。
>>773 >>772 が言うには、throw hoge_exception ってやっちゃダメなんだってさ(藁
例外って、ユーザが不正な文字列入力してきたとか、 そういうコンパイルの時点では避けようのないミスが起きたときに出すもの。 goto 的なことをするために例外投げちゃ駄目。
>>774 ループ抜けるために投げるのはダメだろ。
エラーで抜けるなら構わんが。
ループが最後まで実行されず、途中で抜けなければいけないのは十分例外に値するとか言ってた香具師がいたな。
>>778 772だけ読めば確かにツッコミ所満載というか言葉足りないけど、
元発言(2重ループのbreak)からの流れでは意味不明ではなかったよ。
むしろ例外処理をベースに制御構文を再構築すべきだな if(exp) { ... } catch(IfException) { // elseの処理 }
781 :
デフォルトの名無しさん :03/10/06 19:39
>>781 2重ループから話飛びすぎじゃないか?なんでThread.Abort()よ。
ちなみにいつ頃まで非常識だったのか教えてくれ。
758もよろしくお願いします。
>>783 KeyDownで拾えないならGridが先に拾うってことだから、諦めて
ProcessDialogKeyだっけ?もっと先に拾えるイベントを使うしかないのでは。
使ったことないけど、Excelみたいのでしょ。
入力確定でコントロール自体が拾ってんじゃないの?
>>781 確かに、割り込みをうまく扱うためによく例外が使われるのだが、
制御を変えるためにどこにでも使用していいと言うものではないんだよ。
例外が発生した時の処理は相当重いということはご存知かな?
ここまでして嫌われるgotoって...なんて可哀想。
787 :
デフォルトの名無しさん :03/10/07 00:27
UserControlの内のStatusBarにボタンを埋め込みたいのですが うまく表示できず困っています。 宇宙仮面さんのHPより以下のコードを拝借しました。 private void OnDrawItem(object sender, System.Windows.Forms.StatusBarDrawItemEventArgs sbdevent) { if (sbdevent.Panel == this.statusBarPanel3) { StatusBar sb = (StatusBar)sender; Rectangle rect = sbdevent.Bounds; this.progressBar1.SetBounds(sb.Location.X + rect.X, sb.Location.Y + rect.Y, rect.Width, rect.Height); } } これはUserControlの外側、つまり普通に使うとボタンがStatusBar上に 描画されるのですがなぜかUserControl内だと表示されません。 OwnerDrowに使用するボタンは消え、StatusBarに表示されない、と言った 現象です。 Tabで移動するとどこかタブ順からしてどこかにあるボタンに移動していうるのはわかるのですが。。 どこがおかしいのでしょうか?よろしくお願いします。
>>787 申し訳ないです。
this.progressBar1.SetBounds(sb.Location.X + rect.X, sb.Location.Y + rect.Y,
rect.Width, rect.Height);
この文で宇宙仮面さんのとこの例のまま
プログレスバーになっていました。
実際は
this.button1.SetBounds(sb.Location.X + rect.X, sb.Location.Y + rect.Y,
rect.Width, rect.Height);
でした。
なにかしらお心当たりのある方、なにとぞよろしくお願いします。
Controls.Addの順番かなんかの問題じゃない?
うまくいきました!!ありがとうございます
792 :
デフォルトの名無しさん :03/10/07 17:43
こんにちは。VS.NET2003を使用しております。 DLLにある関数を使用しようとして、DllImportとすると、 MarshalDirectiveException 追加情報 : PInvoke 制約 : 変数を返すことはできません。 が発生して困っています。 インポートしようとしている関数がVB6用で、ヘッダファイルを見ると戻り値がVARIANTになっています。 どうもこの辺が怪しいような気がしています。 C#でVARIANT型の戻り値をもつ関数をDllImportする方法をご存知の方はいらっしゃいますでしょうか? 使用しようとしているのは、BASP21のbsmtp.dllです。 [DllImport("Bsmtp.dll")] public static extern object RcvMail(string szServer, string szUser, string szPass, string szCommand, string szDir); と記述しています。 また、具体的な中身は分かりませんが、Bsmtp.dllといっしょにあるBsmtp.hを見ると、 EXTERN_C BSMTP_API VARIANT APIENTRY RcvMail(BSTR* szServer, BSTR* szUser, BSTR* szPass, BSTR* szCommand, BSTR* szDirname); のように定義されているようです。 よろしくお願いします。
>>792 本当にVARIANTが戻り値?
戻り値はHRESUTで、VARIANTは[out,retval]じゃないの?
>>793 おぉぉっ!レスサンクス
一応、BASP21公式ページの方で、「BSMTP DLLを直接Visual Basicから呼出せばいいのです。」と書いてあり、
Private Declare Function RcvMail Lib "bsmtp" _
(szServer As String, szUser As String, szPass As String, _
szCommand As String, szDir As String) As Variant
とやれ、って書いてありましたので、そのようにしています。
DLLImportの基礎的なことがわかってなくて申し訳ないです。
dllの方のソースはないんですが、それって調べる方法ありますか?
>>792 見事にVARIANT戻してるね。
とりあえずそのサイト見てみたらタイプライブラリもついてるみたいだし、それ参照に加えたらなんとかならない?
>>795 それは、Tlbimp.exeで〜Lib.dllを作成して、参照、と言うことでしょうか?
その方法では該当メソッドについて、戻り値objectとすることでうまく動きました。
情報小出しになってしまって大変申し訳ありません。
ただその方法だと(当然ですが)元DLLを
regsvr32しなければいけないので、躊躇していました。
また、VB用の過去資源を持ってらっしゃる方は多いと思います。
今質問させていただいてるDLL以外でも、
多分そのうち同じような問題にぶち当たりそうな気がしたため、
こちらで質問させていただきました。
長くなってしまって申し訳ありませんが、よろしくお願いします。
多重ループを関数にして、returnで脱出ってのはC#ではできないの?
再帰は普通に出来るだろ
799 :
デフォルトの名無しさん :03/10/07 19:02
>>792 とりあえず、IntPtr で宣言しておいて、Marshal.GetObjectForNativeVariant()
とかで変換するしかないんでない?
800 :
デフォルトの名無しさん :03/10/07 19:21
XML-Webサービスで,SOAPメッセージのヘッダーの扱いを調べているんですが, サービス側コードで,SoapHeaderを継承したヘッダークラスを作り, [WebMethod] [SoapHeader("myHeader")] ゴニョゴニョ というやり方で,SOAPヘッダーを作ることは出来たのですが, <soap:Header> <MyHeader> <path> <forward>AAAAA</forward> <return>BBBBB</retrun> </path> </MyHeader> </soap:Header> のように,ヘッダー要素を入れ子にすることは可能なのでしょうか? 宜しくお願いします.
>>796 カスタムマーシャラとか試してみたがうまく行かなかった・・・
>>800 これでいけるんじゃない?
public class MyHeader : SoapHeader {
public Path path;
}
public class Path {
public string forward;
public string @return;
}
ためしに、VARIANTを使用していないほかのメソッドをインポートしようとしてみたら、 今度はNullReferenceExceptionでした.... もうお手上げです。DLLImportについて1から勉強しなおします。 とりあえず当面は素直にCOMから使用するようにします。 お手数おかけした皆様、どうも申し訳ありませんでした。
>>802 有難うございます.でも,そのやり方だと,クライアントアプリ側で
MyHeader myHeader = new MyHeader();
とヘッダインスタンスを作って,
myHeader.path.forward = "AAAAA";
とアクセスした瞬間に,
『オブジェクト参照がオブジェクトインスタンスに設定されていません』
というエラーが発生してしまうんです.
ちなみに,普通のメンバ変数だけのヘッダクラスではこのエラーは発生しないのですが.
何か,普通とは違う方法が必要なのでしょうか?
>>804 そりゃあ、pathもnewしないと駄目だろ。
>>805 (#゚Д゚) が〜ん・・・
永らくお世話になりました・・・
いやいや,どうも有り難うございました.
newがめんどくさかったら、Pathをclassじゃなくてstructにしたら?
>>807 それは少し試したんですが,サービス側でそのように記述しても,
WSDLとしてクライアントに渡って,自動的に生成されるプロキシクラスのコードでは,
中を見たときに,classに勝手に変換されていたんです・・・
>>789-790 お手数おかけします。
方法は合ってるとして、手順を変えて試すために
サンプルアプリケーションを作成しました。
基本的にデフォルトのままです。
追加したUserControl1の上にボタンを貼り付け(button1)
ステータスバーも設置(statusBar1)
statusBar1のShowPanelsプロパティをTrueへ変更。
statusBar1のPanelsコレクションにstatusBarPanel1を追加。
statusBarPanel1のStyleプロパティをOwnerDrowに変更。
UserControl1にstatusBar1のDrawItemのイベントハンドラを追加
if (sbdevent.Panel == this.statusBarPanel1)
{
StatusBar sb = (StatusBar)sender;
Rectangle rect = sbdevent.Bounds;
this.button1.SetBounds(sb.Location.X + rect.X, sb.Location.Y + rect.Y,
rect.Width, rect.Height);
}
Form1のLoadのイベントハンドラを作成して以下を記述。
UserControl1 uc=new UserControl1();
this.Controls.Add(uc);
uc.Show();
uc.BringToFront();
結果は
>>787 とまったく同じでした。
ほんと心当たりでもいいのである方、力になってください。
よろしくお願いします。
readOnlyのファイルを削除するにはどうすればいいでしょうか? FileInfo.Delete(); これを使っても例外が発生して削除できません。 よろしくお願いします。
>>811 FileInfo.Attributesで属性いじるとか。
>>812 できました。即レスありがとうございました
814 :
デフォルトの名無しさん :03/10/08 18:20
コレクション内の値の参照方法について質問です。 ArrayList hogeAL = new ArrayList(); for(int i = 0; i < 10; i++) { int[]hoge = new int[5]; for(int j = 0; j < 5; j++) { hoge[j] = i * j; } hogeAL.Add(hoge); } という感じで、ArrayListに配列を追加しています(上の例はサンプルなので実行内容に意味はないですが)。 で、ArrayList の n 番目に入ってる配列の、m 番目の要素を 取り出したい時、多重配列のような気持ちで int unko = hogeAL[n][m]; とすると「角かっこ[]付きインデックスを'object'型の式に適用することはできません。」とエラーが出てビルドできません。 でもこれ、ウォッチ式だとちゃんと値が取れるんです。 hogeAL[n][m] で。 といってもしょうがないので、今のところ int[] kuso = (int[])hogeAL[n]; int unko = kuso[m]; という形で取り出しております。もうちょっといい方法はないものでしょうか?
>>814 >>815 か、或いは
int unko = ((int[])hogeAL[n])[m];
と明示的にArrayListの中身を一度int[]にキャストしてやるか。
//この変数名はどうにかならんか。
class IntArrayList : ArrayList { public int[] this[int index] { get { return (int[])List[index]; } } } とか汁
818 :
デフォルトの名無しさん :03/10/08 19:17
genericsが導入されたらライブラリで使われてる 配列(string[], int[])ってgenericsに置き換えられるのかな?
819 :
デフォルトの名無しさん :03/10/08 23:31
現在のNICの情報を取得及びIPAddress,Subnet,Gateway, DNS等を設定するにはどうすればよいでしょうか? WMIを使うのが吉と、どこかのスレで見たような 気がするのですが… 教えて君ですいません。
今流行の自己解決しました。 どうやらどういう訳かパネルに描画したボタン、 というよりはステータスバーのパネル自体が裏側にまわっていたようです。 this.button1.BringToFront(); とすることで無事表示することができました。 それにしてもなぜこういう現象が発生したのでしょうか。 原因はまだわかってません。 ちなみに調べていく過程で描画したのに表示されなかったボタンに イベントを作成してみたらTabキーで移動してスペースキーにて イベントの発生を確認しました。 で、見かけだけの問題だとわかったので解決法に行き着きました。 なにかの参考になればと思い解決に行き着くまでの経緯も載せておきました。 でもほんとなんでthis.btnLeftMost.BringToFront();が必要なのだろうか。 謎です。
vectorに載せるほどの物でもないソフトを評価してもらうスレとか サイトをご存知ないですか? 自分では気付かないところとか指摘してほしいのですが
>>821 適当なアップローダに挙げてここで聞けば?
C#スレの中でこのスレが一番ふさわしいと思うし。
823 :
デフォルトの名無しさん :03/10/09 09:26
float型のif文はどういう風に書けばいいでしょうか? float f=0.5F; if (f<0F) return true; else false; これだと戻り値がfalseになります よろしくお願いします
824 :
デフォルトの名無しさん :03/10/09 10:36
FormのPaintを処理する時本によってOnPaintをオーバーライドするのと、 Paint+=new EventHandler(hoge) と二種類ありますがどちらがいいんでしょうか?
825 :
デフォルトの名無しさん :03/10/09 10:50
フォルダの共有をするために APIのNetShareAddを呼びたいのですが引数はどうすればいいのでしょうか?
826 :
デフォルトの名無しさん :03/10/09 11:25
>>823 0.5 と 0.0 と、どっちが大きいかわかってますか?
>>826 しまったーー!!!
うわ!はずかしいー!おれってバカw
おれプログラミング向いてないかも・・・・(;つД`)
>>827 恥ずかしながらネタじゃないです。
↑間違い、824じゃなくて823でした
830 :
デフォルトの名無しさん :03/10/09 12:30
VisualStudioのソリューションエクスプローラーなんだけど、 ファイル開くたびに「クラスにコンポーネントを追加するには・・・・」画面がいちいち出てうざいです。 これってどこから設定変えるんでしたっけ? あと、フォームをクリックすると勝手にデザイナが出てくるのも。 毎回、右クリ→コードを表示にしてるんだけど、メンドクサイ・・・・
すいません、「クラスにコンポーネントを追加するには・・・・」問題は 解決しました。 でもやっぱりダブルクリックでコードデザイナが開くよ・・・
>>831 意味がわかりません。とりあえず落ち着いてください
すみません、教えてください。 public class TestClass { private ArrayList nakami; public TestClass() { nakami = new ArrayList(); nakami.Add(new NakamiClass()); nakami.Add(new NakamiClass()); } } public class NakamiClass { private Color[] color; public NakamiClass() { color = new Color[2]; color[0] = Color.Black; color[1] = Color.White; } } というクラス定義があって(続く)
testClass = new TestClass(); Type[] et = new Type[] {typeof(NakamiClass)}; System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(NakamiClass), et); System.IO.FileStream writer = new System.IO.FileStream(filePath, System.IO.FileMode.OpenOrCreate); serializer.Serialize(writer, testClass); writer.Close(); としてXMLに書き出したのですが(続く)
835 :
デフォルトの名無しさん :03/10/09 17:17
<?xml version="1.0"?>
<TestClass xmlns:xsd="
http://www.w3.org/2001/XMLSchema " xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance ">
<NakamiClass>
<anyType xsi:type="NakamiClass">
<color>
<Color />
<Color />
</color>
</anyType>
<anyType xsi:type="NakamiClass">
<color>
<Color />
<Color />
</color>
</anyType>
</NakamiClass>
</TestClass>
のように Color の値が保存されません。どうしたらよいでしょうか?
構造体を引数にうまく渡せなかったので C++でラッパーのDLL作ってなんとかしのぎました^^;
Colorをintに変換して保存してロード時に Color.FromRgbでいいんじゃないですか?
public void ScaleTransform(float, float); 画像によったら、↑で正確に拡大縮小されない物があるのですが こういう問題はどうやって克服すればいいでしょうか?
>>837 ありがとうです。
色々試してもColorが保存されないんで、
Color.FromRgba で int で保存させたらばっちりでした。
でも何でなんだろう?
>>839 ぐはあ。
「型によっては、先に変換しないと XML にシリアル化できないものがあります。
たとえば、System.Drawing.Color は、その ToArgb メソッドを使用して、
XML にシリアル化できる整数に変換する必要があります。」
そこに思い切り書いてありますた。すっきりしました、ありがとうー
842 :
デフォルトの名無しさん :03/10/10 16:14
該当コードとうまく行かない画像をアップすれば誰か答えてくれるかもしれん
>>843 それがどうもお恥ずかしい話なのですが、エッチなものでして、
モザイクかけてうpすればいけるかな?
あと、一つだけの画像じゃなくて、半分ぐらい?がうまく拡大縮小できません
private void PicView(FileInfo fi) { float sx=0,sy=0; Bitmap bitmap=new Bitmap(fi.FullName); pictureBox1.Image=new Bitmap(pictureBox1.Width,pictureBox1.Height); Graphics g=Graphics.FromImage(pictureBox1.Image); g.Clear(this.BackColor); g.ResetTransform(); sx=(float)pictureBox1.Width/(float)bitmap.Width; sy=(float)pictureBox1.Height/(float)bitmap.Height;
if(sx>=1 & sy>=1)//画像が小さいなら {} else { if(sx<1 & sy>=1)//横幅がはみ出す場合 { //MessageBox.Show("横幅がはみ出す場合"); g.ScaleTransform(sx,sx); } else { if(sx>=1 & sy<1)//縦幅がはみ出す場合 { //MessageBox.Show("縦幅がはみ出す場合"); g.ScaleTransform(sy,sy); } else { //MessageBox.Show("両端がはみ出す場合"); if(sx<=sy) g.ScaleTransform(sx,sx); else g.ScaleTransform(sy,sy); } } }
何をしたいのかと言うと、固定サイズのpictureBoxに画像を縦横拡大比固定で表示させたいのです。 既存のメソッドでは、縦横比があっていない拡大strechと画像サイズに合わせるAOTOなどで 思っているようなことができないので、自分でやろうと思ったのですが・・・ よろしくお願いします
すいません、最後のコード欠けてました g.DrawImage(bitmap,0,0); pictureBox1.Refresh(); }
>>838 C#によるプログラミングWindouws下にそうできるコード載ってましたよ。
勝手に引用していいかわからないので書きませんが。
>>845 DrawImage はスケーリングをサポートしてたと思うけど
それを使わずに ScaleTransform を使うのは何か理由があって?
>>838 違います。
イメージとPictureBoxのサイズの比率と
DrawImage(image,int x,int y,int Width,int Height)で描画しているコードでした。
>>852 VC#300の本を見ながらやってるもので
そのままやって見たんです
それと、DrawImageでやる場合というのは直接画像サイズ指定するんですよね?
DrawImageを使って↑のコードとまったく同じ動作するものを作ってみたのですが
それでもうまくいきません。
で、サイズがちゃんと取得されていないのかと思いbitmapとpictureBox1のサイズを
表示してみたのですが、完璧にあっています。
ちなみに、この画像を他のフリーのビューアーで拡大してみるとちゃんと表示されます
しかし、↑のコードでやると、ちゃんと縮小されない、0.5倍にしたいのに、0.8倍ぐらいになって、
pictureBoxからはみ出してしまいます。
>>852 さんは、DrawImageだとちゃんと動作すると言うことがおっしゃりたいのですか?
>>853 g.DrawImage( myBitmap, 0, 0, this.pictureBox1.Width, this.pictureBox1.Height);
このコードはどう見ても、pictureBoxのサイズに縦横比無視で引き伸ばしているように見れるのですが・・・・
俺はこれで正しく動いた 838 の目指してる動作とはもしかしたら違うかもしれないが private void Form1_Load(object sender, System.EventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); if ( dlg.ShowDialog( this )==DialogResult.OK ) { using( Bitmap bmp = new Bitmap( dlg.FileName ) ) { float scale = Math.Min( 1.0F, Math.Min( pictureBox1.Width/(float)bmp.Width, pictureBox1.Height/(float)bmp.Height ) ); pictureBox1.Image = new Bitmap( bmp, new Size( (int)(bmp.Width*scale), (int)(bmp.Height*scale) ) ); } } }
ところでこれじゃ駄目なの? Image origin = Image.FromFile(fi.FullName); Image image = new Bitmap(origin, pictureBox1.Size); pictureBox1.Image = image;
>>857 えーーと、これはstrechと同じ機能ですね。
画像の縦横比は崩したくないのです(^^;
>>856 ぱっと見で理解できないので、今から試して見ます
>>856 おお!これです。思ってたとおりにできました(理由はわかりませんが)
あれだけ長いコードをたった2,3行で完璧にできるなんて・・・・
私の計算の仕方が間違っていたのでしょうか?
>>860 完全に参りました!!なんかすごいですね!
私のコードなんて恥ずかしい・・(VBから始めたからかな?)
みなさん、ご迷惑お掛けしました。 && どうもありがとうございました
>>856 何度見ても惚れ惚れする綺麗なコードですね。
一応何をやってるか理解できました。
基本的なアルゴリズムは私ので間違いなかったんですね。
DrawImageやScaleTransformは、まともに働かないことがあるっていう理解でよろしいでしょうか?
>>862 知らんが
> 0.5倍にしたいのに、0.8倍ぐらいになって
正しく 0.5 倍になってることを確認したか?
>>863 それも確認済みです。
あと、計算方法がもしかしたら間違ってるのかと思って
条件分岐の部分はコメントにして、単純に
g.ScaleTransform(0.5f,0.5f);
にしてもやはり、0.8倍ぐらいに表示されます。
>>864 ScaleTransformは使ったこと無いがDrawImageが失敗したことはないなぁ。
画像の解像度とか影響してくんのかな・・・
>>865 私もそれが気になったので解像度について調べたのですが96dpiまでなら対応してるそうです
で、うpした画像は確か76dpiぐらいだったと思います
>>865 ScaleTransformもDrawImageも試したのですが、
大体同じような結果で表示されました。
DrawImageがちゃんと動いてるとしたら、ScaleTransformもうまく動くはずです。
多分、冒頭のビットマップインスタンス生成のところで何か間違いを侵しているのかな?
と、思っていろいろ試してるのですが、んー難しいです。もう少し勉強してきます。
ありがとうございました。
すいません。 Graphics.DrawRectangles メソッド (Pen, Rectangle[]) についてですが、 このヘルプにあった表記の通り、一次元の配列しか受け付けないのでしょうか? 実際自分ではやってみたのですが、2次元の配列は駄目でした。 つまり、一次元の配列ならメソッドが用意されてるが、2次元以上は自作しろと言うことなのでしょうか?
C#でTWAINを使用してデジカメなどから画像を取得したいのですが、 適当なクラスライブラリが見つかりません。 何か良い智恵は無いものでしょうか? 一応、Windows標準のイメージングを使用すると出来るらしいと 聞いたのですが、XPにはイメージングが入ってないもので…
871 :
デフォルトの名無しさん :03/10/11 01:40
文字を半角数字かどうか判断するのはどうするのでしょうか? Char.IsDigit()だと、全角も数値と判断されてしまいます。 if文で判断するしかないでしょうか? if('0' <= ch && ch <= '9')...
regex
regexをわざわざ使うよりかは自作のisDigitを作った方がいいかと。
わざわざ自作のisDigitを作るくらいならregexを使った方がいいかと。
>>870 サンクスコ
これで何とかなりそうです。
検索キーワード「txt」で検索した場合 txtもTXTもTxtもTXTもtxtもヒットさせるにはどうすればいいですか?
別アプリの操作をしたいのですが なにから調べて良いのかがわかりません。 (そんなことが出来るかもわからないですが) とりあえずは「ペイント」で 「鉛筆」ボタンと「ブラシ」ボタンを交互に押させてみたいのですが 参考になる情報などありませんでしょうか。
さらにいいことがありました。
>>856 氏のコード利用させてもらうと、スライドで画像見てる場合
描画に時間のかかる画像の場合、すべて表示されずに次の画像が表示されてましたが。
すべて表示されるまで、次の画像へ行くのを待ってくれます
(なぜかはわかりませんが)
>>878 すいません。勘違いでした。表示されない場合がありました
>>876 検索対象を先に ToLower しとく。
WebClientクラスのUploadFileがうまくいかない Webサービスでファイルをアップロードできるのかな オフィスファイルはシリアライズできないみたいだし FTP使うのもな
>>881 いや、検索対象が短かったら普通 ToLower 使うぞ。
長いときは Regex クラスでも使え。
ToLowerってそんなに遅いのか? 正規表現の場合だって全文字についてケースを区別しない比較(どちらかにそろえて同じかどうか比べるってことだろ?)をするはずだから、 むしろ検索が高速になるようにあらかじめToLowerしちゃった方がいいんじゃないの?
>>877 APIで自己解決しました。
ただ操作したい対象がタブコントロールのタブの場合
今のところ操作できません。引き続き情報募集です。
886 :
◆/gyxcnlOg. :03/10/11 20:42
質問 フォルダ内のサブフォルダ以下のすべてのファイル数を調べるにはどうすればいいでしょうか? 目的 フォルダ内のサブフォルダ以下のすべてのファイルを検索する時に、プログレスバーを用いてファイル検索の進行具合を表現したい。 それには、再帰処理で検索する前にすべてのファイル数、容量などをプログレスバーにセットしたい 試したこと 私が思いつくのは、再帰的にDirectoryInfoなんか使って数を数えていく方法だけですが それをやると、検索するのと同じぐらい時間がかかる(ディスク読みに行くので)無意味でした。 Explorerでフォルダ右クリックしたら、ファイル数が一瞬ででますよね? ああいう感じで取得したいのです よろしくお願いします
>Explorerでフォルダ右クリックしたら、ファイル数が一瞬ででますよね? 一瞬では出ないだろ。 ともかくC#のクラス使うと途中でGCが走って遅くなるような気がするからWin32APIのFindFirstFileとか使えば?
888 :
デフォルトの名無しさん :03/10/11 22:52
C#の限界が垣間見えますた。
889 :
デフォルトの名無しさん :03/10/12 00:57
うむ。いままで普通にやってたことをやるには結局DllImportしなきゃならない。 ファイルのアイコンを取得する程度のこともできない。
将来的に.NetFrameworkってどこまで機能追加していくのかな?機能は段々 追加していくんだろうけど、WinAPIの機能全部盛り込んだりしたら、サイズ がでかくなりすぎるだろうし、その辺りの切り分けってどう解決するんだろう。
>>889 つかそういうのはWindowsに特化してるし、必須じゃないからなあ。
別にヘッダがあるか無いかの話で、必要ならDllImportするだけ。
LonghornでほとんどがDllImportしなくて済むようになるかと。
ってゆーかできなくなるんじゃねーの? WinAPIの大半を削除したらしいし。
894 :
デフォルトの名無しさん :03/10/12 03:31
皆さん、C#でアプリケーションを作成する際、 Doc/ViewやMVC1やMVC2アーキテクチャは使っていますか? つかっていらっしゃる方どのように実装しています?
ModelのイベントをViewが受け取って、 ViewのイベントをControllerが受け取って、 ControllerがModelを制御する
896 :
デフォルトの名無しさん :03/10/12 03:56
どのように実装しています?
どのようにも何も、そのまんまだけど?
898 :
デフォルトの名無しさん :03/10/12 05:09
Viewはどのように作っていますか?
>>893 どこかの素人向け記事を鵜呑みにするなよ。
WinAPIの大半を削除したら旧アプリが動かなくなるだろ。
900 :
デフォルトの名無しさん :03/10/12 09:22
>>899 あなたはまだうぃんどうず3.1ですか?
901 :
デフォルトの名無しさん :03/10/12 09:32
プログラムコードでコントロールをフォームに作成するにはどうすればいいですか? ユーザーがボタンを押すとフォームにラベルを作成したいのです
そのラベルはArrayListを継承した自作のクラスなんです。 それをラベルと同じ見た目で表示したいのです。
>>905 ButtonのClickイベントで、FormにLabelをAddすればいいんじゃないのか?
Label lbl = new Label(); lbl.Text = "テキスト"; lbl.Location = new Point(123, 456); フォーム.Controls.Add(lbl);
>>908 いけました!ありがとう
自作クラスでも継承しておけば、ラベルと同じ表示になるんですね。
>>909 205の「ArrayListを継承した自作のクラス」ってのは、
「public class MyLabel : ArrayList」…って解釈でいいのかな?
もしそうなら、Controls.Add は出来ない。
>>910 すいません、継承はLabelでした
で、フィールドにArrayListです。
オブジェクト指向って難しい・・
キャストってそんなに高いのか? ・・・まぁ、頭の隅にはとどめておこう。
914 :
デフォルトの名無しさん :03/10/12 15:16
protected override void WndProc(ref Message m) { const int WM_NCHITTEST = 0x0084; const int HTCLIENT = 1; const int HTCAPTION = 2; base.WndProc(ref m); if (m.Msg == WM_NCHITTEST && m.Result.ToInt32() == HTCLIENT && NonMove()) { m.Result = new IntPtr(HTCAPTION); } }/**/ とやってフォームを移動出来るようにしました。 これだとフォームをダブルクリックすると最大化されてしまいますが、それを無効にする方法を おしえてください。
>>914 MFCだと↓でいけるので、これをC#に翻訳
void CMyDlg::OnNcLButtonDblClk(UINT nHitTest, CPoint point)
{
if ( DefWindowProc( WM_NCHITTEST, 0, MAKELONG( point.x, point.y ) )!=HTCLIENT )
Default();
}
916 :
デフォルトの名無しさん :03/10/12 15:35
>>916 > is should only be used when it's only necessary to test the type of some object.
> If you're going to use the object if the is condition succeeds, use as instead.
> This prevents two cast operations which can be expensive.
is はただオブジェクトの型をテストする必要があるときだけ使用されるべきである。
is の条件が満たされたときにそのオブジェクトを使用するのなら、変わりに as を使用するべきだ。
そうすれば、高価になりがちなキャストを2度行わなくて済む。
と、俺のつたない英語力は読んだんだが、正直キャストの2度や3度どうでもいいじゃん?とか思ってしまう。
>>917 動的型情報の取得に結構コストがかかる。
それに、obj is Type ? (Type)obj : null;
とすると、(Type) でまた動的型情報の取得する上に、
型が違ったときに例外を投げるコードまで入っちゃうし。
919 :
デフォルトの名無しさん :03/10/12 18:58
AVIやMPEGなどの動画を簡単に生成できるようなクラスとかってまだないんだっけ
920 :
デフォルトの名無しさん :03/10/12 20:55
>819 誰か答えてあげて… 俺も書こうと思ったら先越されてるは、誰も答えてないわで…
>921 ん??
923 :
デフォルトの名無しさん :03/10/13 03:56
monthCalendarで取得した日付の計算はどのようにしたらいいのですか? textBox1.Text = monthCalendar1.SelectionStart.ToString("d"); textBox2.Text = monthCalendar1.SelectionEnd.ToString("d"); で日にちの範囲を取得しました。 textBox2に入ってる日にちからtextBox1に入ってる日を引きたいのですかどうすればいいのでしょうか?
>>923 はマルチにつき放置の徹底をお願いいます。
どのスレ・レスとのマルチかを示すURLひとつ出さないのは、単なるうっかりミスですかね。
>>925 めんどうだからだろ
どぼんとことのマルチだな
/// <summary> これは何ですか? /// <summary>
932 :
デフォルトの名無しさん :03/10/13 16:09
ボタンをクリックするとサウンドがなるようにしたいのですが、どのようにすればよいのでしょうか? どうしてもわからないのでよろしくおねがいします。
933 :
デフォルトの名無しさん :03/10/13 16:38
メディアプレイヤー搭載したフォームを作ったのですが 下記のファイルがないとアプリが起動しないようなのです AxInterrop.WMPLib.dllとInterop.WMPLib.dll ↑これは配布してもいいんですか?
>>933 Interop.Hoge.dllはCOMを使う為に自動生成されたDLLだから配布OKでしょ。
539 元すれ1 ◆jYDOLr.5ps [age] : 03/10/13 14:50
あ、これだけだと動かないや。
AxInterrop.WMPLib.dllとInterop.WMPLib.dllもいるみたい。
↑これは配布してもいいんですか?
540 元すれ1 ◆jYDOLr.5ps [age] : 03/10/13 16:36
C♯相談室 Part11
http://pc2.2ch.net/test/read.cgi/tech/1061262958/ ここではレス付きそうにないのでこっちに移動します
936 :
933 ◆Ikx9obzOAY :03/10/13 17:01
>>934 情報thx
AxInterrop.WMPLib.dllこちらも自動生成されたのでOKですか?
あぼーん
939 :
デフォルトの名無しさん :03/10/13 18:20
あぼーん
あぼーん
ありがとうございます。理解できました。
945 :
デフォルトの名無しさん :03/10/14 12:41
新スレ酷いことになってるな・・・
System.Net.Sockets.Socketって継承できないのでしょうか? class CustomSocket : System.Net.Sockets.Socket{} でエラーになるんですけど。 C#触って3日目の房ですみません。
すみません。自己解決しました。
「スレッド処理を長時間行わせていると」 ってのと >十分なクォータがありません。 からみて、リソースリーク関連かな? タスクマネージャ等でアプリケーションとシステムの状態を監視しなさい。 まずは、問題を把握しましょう。 FreeOnTerminate を True にしても、Terminate しなかったら意味ないし、 解放し忘れリソースがあったらやはり問題だ。
950 :
デフォルトの名無しさん :03/10/15 03:14
_,. -‐、 ____r‐ 、 /´ ` \ ,,―‐. r-、 _,--,、 'フ ,......., \ ,―-、 .| ./''i、│ r-,,,,,,,,,,,,,,,,,,,,,,,,―ー. ゙l, `"゙゙゙゙゙ ̄^ \ r‐''~´ ,.、 ヽ'" _,..‐,'゙ヾ.´ / \ ヽ,゙'゙_,/ .゙l、 `i、 \ _,,―ー'''/ .,r'" .| ヽ' └''´,.:‐r''ヽ, .,,,、.,,i´ .,/^'i、 `'i、`` `--‐'''''''''''''''"'''''''''''゙ `゛ .丿 .,/ └''´> _,.-、 `'´ ∠,,, { "" ,/` ヽ、 `'i、 丿 .,/` .ヾヽ''´ '─'''' } .ヽ、 丿 \ .\ ,/′ 、ヽ,,、 | ,.r、________,r 、 j ゙'ー'" ゙'i、 ‘i、.r-、 __,,,,,,,,--、 / .,/\ `'-,、 `‐'',ゞ---------────‐'´`ヽ´ ヽ .]゙l `゙゙゙゙"゙゙゙゙ ̄ ̄ `'i、 ,/ .,,/ .ヽ \ !、 ノ ゙ヽ_/ .ヽ_.,,,,--―――――ー-ノ_,/゙,,/′ ゙l ," ,ゝ r‐┐ rヮ <´ ` ゙‐''"` ゙'ー'" i´ }_」 │ヽ. j ヽ、 ,人 丿 ヽ._,.ノ `- ' `ヽ、__/
c#って全角の?は使えないんですね。
は?
ユニコード問題だね? C# の言語仕様上の問題。あきらめろ。
954 :
デフォルトの名無しさん :03/10/17 10:28
> マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。 よくヘルプにこう書いてあるけど、意味がわからない。 どういう使い方をすると、安全でないの?
>954 日本語訳のミス。
すまそ。 よく読んだら意味が分かった。 staticのメンバはスレッドセーフで、そうでないメンバはスレッドセーフでないって意味ね。
こんどは意図的な誤回答か。 いよいよ2ちゃんねるらしくなってきたな。
>>253 のことじゃないよ。分かってる人は分かってると思うけど、念のため。
どうやったら253と956を間違えるんだろう
961 :
デフォルトの名無しさん :03/10/17 22:41
int edokko SJIS ---------------------------- 253 == "ニゴミ" == 6C AB ED 0D 956 == "クゴム" == 8B AB ED 1D
962 :
デフォルトの名無しさん :03/10/18 16:18
列挙型のオーバーロードの方法について質問があります。 こんなコードを書いたのですが、コンパイルできません。これは無理なんでしょうか? using System; class EnumOverload { static void Main(string[] args) { Console.WriteLine((ColorBit.Blue | ColorBit.Red).ToString()); } public enum ColorBit : int { Black = 0, Red = 1, Blue = 2, Magenta = 3, } public static ColorBit operator |(ColorBit cbA, ColorBit cbB) { return (ColorBit)((int)cbA | (int)cbB); } }
>>962 enumに [Flags] をつければ演算子再定義もも不要だよ。
964 :
デフォルトの名無しさん :03/10/18 17:24
16bitCRCと32bitCRC算出したいのですが、 解説ページを見てもよくわからなかったので聞かせて下さい。 特にわからなかったのが16bitと32bitの違いです。 まとめてdll化したのが公開されているので 最悪使わせてもらおうとは考えていますが やはり自分のコードに納得の上でC#で実装したいと考えています。 16bit版と32bit版のサンプルってありませんか? すぐ見つかると思ったのですがさっぱり見つかりませんでした。 また、理解しやすい方法などあれば教えて下さい。 ごちゃごちゃ書きましたが目的はC#で16bit版と32bit版の CRC算出関数を作成することです。 よろしくお願いします。
>963 ありがとー。 Magenta が無事出力されました。
966 :
デフォルトの名無しさん :03/10/18 18:04
文字コードの変換について教えて頂きたいことがあります。 JISコードをunicodeに単漢字ごとに変換したいと希望しているのですが、 次のようなコードを作ってみたところ、うまく変換されません。 using System.Text; private void btnTest_Click(object sender, System.EventArgs e) { byte[] data1 = new byte[2]; data1[0] = 0x30;// '亜'のJISコード1バイト目 data1[1] = 0x21;// '亜'のJISコード2バイト目 byte[] data2 = Encoding.Convert(Encoding.GetEncoding("iso-2022-jp"),Encoding.Unicode,data); string str = ""; str += (char)(data2[0]*0x100+data2[1]); MessageBox.Show(str); // ← '亜'が表示されない } よろしくお願いします。
private void btnTest_Click(object sender, System.EventArgs e) { byte[] data1 = new byte[2]; data1[0] = 0x30;// '亜'のJISコード1バイト目 data1[1] = 0x21;// '亜'のJISコード2バイト目 byte[] data2 = Encoding.Convert(Encoding.GetEncoding("iso-2022-jp"),Encoding.Unicode,data1,0,2); string str = ""; str += (char)(data2[0]*0x100+data2[1]); MessageBox.Show(str); // ← '亜'が表示されない }
>>966 エスケープシーケンスの問題。
byte[] bytes = Encoding.GetEncoding("iso-2022-jp").GetBytes("あい01う2");
でbytesを見ると、
1B 24 42 24 22 24 24 1B 28 42 30 31 1B 24 42 24 26 1B 28 42 32
って配列になる。
全角文字列の開始/終了位置にそれぞれ3バイトのエスケープシーケンスが必要なわけだ。
c#のソフトはwinnyで落とそう。
>>968 変換できました。ありがとうございます。
penisu maturi
973 :
デフォルトの名無しさん :03/10/19 20:13
埋めろ
975 :
デフォルトの名無しさん :03/10/20 12:56
(・∀・) オチンコ! (・∀・) チンコ! (・∀・) ンコ! (・∀・) コ! (・∀・) !
976 :
デフォルトの名無しさん :03/10/21 01:29
pictureboxで描画した画像をbitmapで保存する方法を知ってるかたいますか? 宜しくお願いします。
977 :
デフォルトの名無しさん :03/10/21 02:11
pictureboxImage.Save("hoge.bmp"); で如何かしら?
978 :
デフォルトの名無しさん :03/10/22 16:18
正規表現を利用しHTMLのタグ(小なり記号から大なり記号の間)を取り除きたいのですが、 どんな正規表現にすればよいのでしょうか? <h1><b>TEST</b></h1> ↓ TEST
<[^>]+>
980 :
デフォルトの名無しさん :03/10/22 17:02
>>979 .*を使うと思って試行錯誤してました・・・
<[^>]+> 、完璧です!!
ありがとうございました!!
981 :
デフォルトの名無しさん :03/10/22 18:19
外部のDLL関数呼び出しのために使用する 以下のようなクラスがあります。 [StructLayout(LayoutKind.Sequential)] public class AAA { public uint dwAbc; public uint dwFef; } [StructLayout(LayoutKind.Sequential)] public class BBB { public uint dwGhi; public uint dwJkl; [MarshalAs (UnmanagedType.ByValArray, SizeConst=1000)] public AAA[] aaa; } クラスBBBのサイズを求めようと、 BBB bbb = new BBB(); Marshal.SizeOf(bbb); とすると例外が発生してしまいます。 サイズを求める方法はないでしょうか?
× Marshal.SizeOf(bbb); ○ int size = Marshal.SizeOf(bbb);
983 :
デフォルトの名無しさん :03/10/23 05:14
>>977 ありがとうございます。やってみます。
また、質問です。
”メモリ不足です。”というエラーが出ます。
多次元配列やギザギザ配列([ ],[ ] )を使ったせいなのですが
現在、プログラムが使えるメモリがどれくらいで、プログラムがどれほどメモリを占有しているか、
調べる関数はあるのでしょうか?実際の変数の大きさ、オブジェクトのメモリ(ビット)が
プログラムの大部分のメモリと考えてよいのでしょうか?
ちなみに、メモリは1GBくらいでした。
984 :
デフォルトの名無しさん :03/10/23 14:14
やれやれだぜ
変数 n に数字を入力して、n / 5 + 32 を計算するプログラムを作成せよ。 また結果を表示せよ。 コレがどうしてもわかりません誰か式を書いて解説していただけないでしょうか?
↑マルチはけーん
すまそ、マルチじゃなかった
じゃあ、ちゃんと言い直そうぜ。
>>985 シングルはけーん
>>985 むしろ何が分からないのかが分からない。
おれもマルチかとオモタよ。 でもこれ荒れるのを期待したネタでしょ?
埋め
膿め
梅
宇目
うめー
うめえ
1000取ったらゲイツの奥さんと不倫する。
998
1000前夜祭
( ̄ー ̄)ニヤリッ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。