首页 > 解决方案 > 当我将值写入 ComboBox 时,SelectedIndexChanged 事件不会触发。当我从 comboBox.Items 列表中选择一个值时它会触发

问题描述

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

标签: c#eventscombobox

解决方案


您可以使用以下代码片段创建此事件:

    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");
    }

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


推荐阅读