- - PR -
C#の動作について
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-12-22 16:55
(あ゛っ、出遅れた)
と、いうことで次に調べてみるのはコード内に
という構文のコードがあるか(あるいはないか)、あればそれはどこか。ですね。 | ||||
|
投稿日時: 2005-12-23 06:49
("様"は嫌だなぁ) だから、落ち着きましょう。。。せめて、入力ミス、変換ミスがないかぐらいは、見直しましょう。(で、30分以内なら削除できます) 対応する…これ、解釈が難しいですね。私は「デフォルトイベントのハンドラ」と書きましたよね。ボタンであれば Click、テキストボックスであれば TextChanged が、デフォルトイベントです。ですから、フォームデザイナで、そのコントロールをダブルクリックしたときには、ボタンであれば button1_Click メソッドができて、そこに移動します。 このとき、同時に InitializeComponent メソッド内に、button1.Click += new ClickEventHandler(button1_Click); という行ができています。この行が、デザイナ上(プロパティウインドウ)で、イベントとメソッドを結びつけています。 ここで問題になるのは、この行を、どこに書いたか、ということです。この行が InitializeComponent にあれば、デザイナ上でコントロールをダブルクリックすれば、このハンドラメソッドに移動します。しかし、InitializeComponent になければ、新しく作られます。 たとえば、「フォーム上にコントロールがたくさんあるから、制御ファイルにコントロールの種類、名前、対応するイベントハンドラを定義しよう」みたいなことをしていると、デザイナからコードへの移動はできません。 たとえば、「プログラムを初期化する処理を云々」と書いてある下に、自分で button1.Click += ... と書いたなら、これもデザイナからコードへの移動はできません。 再三繰り返しになりますが、今回は comboBox でしたっけ?それのイベントハンドラを定義する行が、どこにあるのかを確認してください。 または、その行が消えてしまうのかどうかを、確認してください。 それと、あなたが確認した、再現した手順を書いてください。 これは、新規にプロジェクトを作成したものが好ましいですが、今あるプロジェクトで確認したのなら、comboBox1.SelectionChanged += ... の行がどこにあるのかを確認してください。 また、フォームデザイナを表示して、プロパティウインドウで稲妻ボタンを押し、SelectionChanged イベントにハンドラが割当たっているかどうかも確認してください。 | ||||
|
投稿日時: 2005-12-25 07:58
Jitttaさん
いつも「何々様」とメールでは書いておりまして、申し訳ありません。 問題のプログラムのForm1.csファイルの中の、”#region Windows フォームデザイナで生成されたコード”というところを、開き、ComboBox25 というのを探してみると、以下のような行がみつかりました。 this.comboBox25.SelectedIndexChanged +=new System.EventHandler(this.comboBox25_SelectedIndexChanged); は、//comboBox25の下にありましたが、 //comboBox11の下に this.comboBox11.SelectedIndexChanged +=new System.EventHandler(this.comboBox25_SelectedIndexChanged); というのがありました。ここには一群のcomboBox11を定義する、Location, Name, Size 等があります。 +=の左右で、comboBox**の**部分の内容が違うことが、原因でしょうか? よろしくお願いします。 _________________ | ||||
|
投稿日時: 2005-12-25 08:44
梅干あきらさん
その状態になるまでにした手順は何ですか?? 1.comboBox25をダブルクリックしてcomboBox25_SelectedIndexChangedを生成 2.comboBox11のSelectedIndexChangedに1で生成されたメソッドを関連付ける ということをしているのなら,梅干あきらさんと同じ状態になります。 狙ってやってるなら別におかしな状態ではないです。 | ||||
|
投稿日時: 2005-12-26 14:20
kazuki様
回答ありがとうございます。梅干です。前回報告したcomboBox11, comboBox25がクロスしている件ですが、コード作成者に質問したところ、意図していないとのことです。自動的に作成される部分でこのようなことが起きるのは、変だと思いますが・・・・・。コード作成者は、自動的に変わっているのだ・・・・と申します。このようなことは、C#では結構起きることなのですか?」 _________________ | ||||
|
投稿日時: 2005-12-26 14:20
kazuki様
回答ありがとうございます。梅干です。前回報告したcomboBox11, comboBox25がクロスしている件ですが、コード作成者に質問したところ、意図していないとのことです。自動的に作成される部分でこのようなことが起きるのは、変だと思いますが・・・・・。コード作成者は、自動的に変わっているのだ・・・・と申します。このようなことは、C#では結構起きることなのですか?」 _________________ | ||||
|
投稿日時: 2005-12-26 15:00
いや、流石に起きた試しがありません。 C# に関しては Handles 句がないため、余計に起こりえません。 埒があきませんね。 InitializeComponent 前後がごちゃごちゃしてそうです。 技術的なコトは担当の方がやってくれないと何とも... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-12-27 10:42
Jittaさん
これは駄目ですよ。コントロールをダブルクリック…これ、本当は「デフォルトイベント」のハンドラへ飛ぶので、あまりよくありませんが… とのことですが、いろいろ本を見る限り、コントロールを配置したあとのダブルクリックでエベントハンドラーを生成しますが、そのあとの動作は、プロパティの稲妻マークの中のクリックを押さないと駄目なのだ、というような記述は、見たことがありません。「あまり良くない」というところを、教えて下さい。 _________________ | ||||
