ティルトで言うように:
- リストボックスがあります
- で値を選択すると
- 最初のSelectedValueChangedイベントには、クリックした値が含まれています
- そして時々、2番目のSelectedValueChangedイベントがあり、リストの最初の値が含まれています
これらのコードを追加するのを見つけました:
これは私のデザイナーが含むものです:
this.listBox1.SelectedValueChanged +=
new System.EventHandler(this.listBox1_SelectedValueChanged);
これは私のクラスに含まれるものです:
public class myControl : UserControl
{
private void listBox1_SelectedValueChanged(object sender, EventArgs e)
{
StackTrace st = new StackTrace(true);
} /// I put breakpoint that line to look at st
}
2番目のイベントが発生する場所がわかりません。スタックにはたくさんのシステム コードがあり、私自身のコードとはあまり関係がありません。しかし、必要に応じてここを通過できます。
私が実際に習得していない唯一のものは、UserControl
コンテキストです。多分その周りに何かする。
それで、1回クリックしたときに2回電話がかかってきた理由がわかりましたか?
King Kingの質問の後に編集します。
シナリオは次のとおりです。
listBox1.DataSource
通話への影響SelectedValueChanged
- 差出人
listBox1_SelectedValueChanged
:{SelectedItem = "1st value"} object {System.Windows.Forms.ListBox}
- 差出人
呼び出しで3 番目の値を2 回クリック
listBox1
SelectedValueChanged
- 差出人
listBox1_SelectedValueChanged
:{SelectedItem = "3rd value"} object {System.Windows.Forms.ListBox}
- 差出人
listBox1_SelectedValueChanged
:{SelectedItem = "1st value"} object {System.Windows.Forms.ListBox}
- 差出人
その後、最初の値のみが選択されます