0

SOのこの質問を文書化する方法が他にわかりません。WinForm と C# でプログラミングしています。ウィンドウにコンボ ボックスを追加し、そのイベント ハンドラーを作成しました。このウィンドウの他のすべてのコントロールはクリック イベントを生成しますが、コンボボックスは生成しませんか? 何もする必要はありませんが、ドロップダウン矢印またはコンボボックス自体を何度クリックしても、イベントハンドラーは実行されません。

private void InitializeComponent()
    {

        // 
        // comboBox1
        // 
            this.comboBox1.AllowDrop = true;
            this.comboBox1.FormattingEnabled = true;
            resources.ApplyResources(this.comboBox1, "comboBox1");
            this.comboBox1.Name = "comboBox1";
            this.comboBox1.SelectedIndexChanged += new System.EventHan(this.comboBox1_SelectedIndexChanged);
        // 
    }

よろしくお願いします。

4

2 に答える 2

2

あなたの説明によると、ドロップダウンをクリックするだけで、イベントがトリガーされることを期待しているように聞こえます。メニューで実際に別のオプションを選択しましたか、それとも単に矢印をクリックしましたか? メニューで選択したオプションを変更SelectedIndexChangedした場合にのみ発生します。また、コードには次のものがあります。

this.comboBox1.SelectedIndexChanged += new System.EventHan(this.comboBox1_SelectedIndexChanged);

それは実際に何ですか?それはコンパイルされるべきではありません。次のようにする必要があります。

this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);

編集:

わかりました、何が起こっているのか知っていると思います。デザイナーでコントロールをダブルクリックしてイベントを接続する場所はどこですか? その場合、そのコントロールのデフォルトイベントが接続されます。したがって、ボタンの場合、デフォルトはClickイベントです。コンボ ボックスの場合、デフォルトはSelectedIndexChangedイベントであり、'Click' イベントではありません。Clickでイベントを接続するComboBoxには、デザイナーでフォームを開きます。次に、デザイナーで ComboBox を選択し、CTRL + W、P を押します。これにより、コントロールの [プロパティ] ウィンドウが開きます。そのウィンドウの上部にある稲妻アイコンをクリックすると、コントロールで使用できるすべてのイベントが表示されます。リストで「クリック」を見つけてダブルクリックすると、イベントが接続され、そのイベントの新しいハンドラーが表示されます。

于 2012-09-19T21:38:16.417 に答える
0
this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);

あるいは単に

this.comboBox1.SelectedIndexChanged += this.comboBox1_SelectedIndexChanged;
于 2012-09-19T21:41:18.303 に答える