2011-07-21 3 views
0

mysqlを使用して、combobox1のコンボボックス2を選択してフィードします。問題は最初の選択はイベントハンドラをトリガしないようです。 2回目に私はそれを引き起こします。C#コンボボックスの選択他のコンボボックスへの供給

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { comboBox1.SelectedValueChanged += new EventHandler(comboBox1_selectedvaluechanged); }

private void comboBox1_selectedvaluechanged(object sender, EventArgs e) { region = comboBox1.SelectedItem.ToString(); values_to_venue(); db.connection.Close(); }

+0

あなたが使用したいイベントがComboBox.SelectionChangeCommittedだと思うのですが、ユーザーがキーパッド上の上下の矢印を使ってドロップダウンリストをナビゲートすると、SelectedIndexChangedは選択が確定する前に起動します。 ??? – gangelo

答えて

2

あなたはコンボボックスの変更のSelectedIndexをするまで、あなたのイベントハンドラを作成していないからです。これはSelectedValueの変更と同時に発生します。 loadメソッドでイベントハンドラを作成し、最初のSelectedValueが変更されたときにそのイベントハンドラが存在することを確認します。あなたがあなたがそれをクリーンアップしていることを確認してください。または、コンストラクタで作成するだけで、削除する必要はありません。

+1

あなたは正しいです。もし彼が何をしなければならないのかよくわからないなら、次の行を書いてください:comboBox1.SelectedValueChanged + =新しいEventHandler(comboBox1_selectedvaluechanged); –

+0

というフォームをロードする関数では、コードをprivate void comboBox1_selectedIndexChangedからinitializeComponentに移動して動作します。 –

0

コンストラクタまたはロードメソッドでイベントを設定する必要があります。あなたが使用したいイベントはComboBox.SelectionChangeCommittedだと思います。ユーザーがキーパッドの上/下矢印を使ってドロップダウンリストをナビゲートすると、SelectedIndexChangedは選択が確定する前に起動します。 ??

関連する問題