【问题标题】:SelectedIndexChanged event does not fire when I write a value into the ComboBox. It does fire when I select a value from the comboBox.Items list当我将值写入 ComboBox 时,SelectedIndexChanged 事件不会触发。当我从 comboBox.Items 列表中选择一个值时它会触发
【发布时间】:2019-07-09 11:47:56
【问题描述】:

我有一个带有整数列表的 ComboBox 作为其数据源。该列表包含从 0 到 255 的整数。 当我通过鼠标从下拉列表中选择一个值时,该事件会触发。 另一方面,当我将一个值写入 ComboBox 时,该事件不会触发。在这两种情况下都不会触发事件 SelectionChangeCommitted。 请我需要一个解释。 提前谢谢你。

【问题讨论】:

    标签: c# events combobox


    【解决方案1】:

    您可以使用下面的代码 sn-p 创建此事件:

        public event IndexChangeHandler IndexChanged;
        public delegate void IndexChangeHandler (object s);
    
         private void button4_Click(object sender, EventArgs e)
        {
    
    
            Task.Run(() =>
            {
                int temp = 0; 
                while (true)
                {
                    System.Threading.Thread.Sleep(2000);
    
                    comboBox1.BeginInvoke((MethodInvoker)delegate
                   {
    
                       if (comboBox1.Items.Count != temp)
                       {
                           IndexChanged(this);
                           temp= comboBox1.Items.Count;
                       }
                   });
                }
    
            });
    
            IndexChanged += Form1_IndexChanged;
            for (int i = 0; i < 5; i++)
            {
                comboBox1.Items.Add(i);
    
            }
    
        }
    
         private void Form1_IndexChanged(object s)
        {
            MessageBox.Show("Test");
        }
    

    我在这个例子中定义了事件表单,你可以在一个单独的类中使用它。 祝你好运

    【讨论】:

    • 感谢您的重播。我没有将项目添加到 ComboBox.Items 列表中。我只允许用户输入已经包含在 ComboBox.Items 列表中的项目。
    猜你喜欢
    • 2017-11-28
    • 2017-06-08
    • 1970-01-01
    • 2020-05-04
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多