ComboBox SelectedIndexChanged事件针对具有相同DisplayMember的项目触发两次

时间:2014-11-26 08:55:00

标签: c# winforms combobox

我有一个如下组合框,有3个项目(“abc”,“abc”和“bbb”)。 组合框还具有AutoCompleteMode“SuggestAppend”& AutoCompleteSource“ListItems”属性。现在我希望文本框显示组合框的SelectedIndex,如下所示:

http://i.imgur.com/MJ4JdDN.png

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        this.textBox1.Text = this.comboBox1.SelectedIndex.ToString(); 
    }

在我选择第二个“abc”之前,一切似乎都很好,SelectedIndexChanged事件将在第一次进入&在文本框中正确显示索引。但是当组合框失去焦点时,SelectedIndexChanged事件将再次触发,导致索引显示错误。我发现它只发生在具有相同值的项目上。有没有办法阻止事件两次开火?

http://i.imgur.com/gEw46xf.png

            this.comboBox1.DataSource = dt;
            this.comboBox1.DisplayMember = "Description"; //Some descriptive field to be shown in combobox
            this.comboBox1.ValueMember = "Code"; //Unique code that user won't understand
            this.comboBox1.SelectedIndex = -1;

1 个答案:

答案 0 :(得分:0)

将comboBox1_SelectedIndexChanged代码放在comboBox1_ValueChanged中,然后你会在事件参数中得到索引(发件人,即你的comboBox将它放在组合框中)。

使用comboBox1.SelectedIndex,你将获得索引。