【问题标题】:Sometime Except Combo Box's SelectedIndexChanged有时除了组合框的 SelectedIndexChanged
【发布时间】:2015-07-27 14:16:13
【问题描述】:

我有一个组合框,它有 SelectedIndexChanged 事件,但我想在某些情况下忽略该事件如何实现该功能。

描述代码如下

private void Form1_Load(object sender, EventArgs e)
    {
        List<string> lstString = new List<string>();
        lstString.Add("One");
        lstString.Add("Two");
        lstString.Add("Three");

        foreach (string str in lstString)
            cBox.Items.Add(str);

        //Here I want Ignore cbox_SelectedIndexChanged Event
        cBox.SelectedIndex = 0;
    }

private void cBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        MessageBox.Show("Your Selected Item is :- " + cBox.SelectedItem.ToString());
    }

【问题讨论】:

  • 除了是什么意思?忽略它 ?在这种情况下,您必须在将索引设置为 0 后测试事件处理程序中的 id == 0 或在代码中而不是在设计器中连接您的事件。
  • 感谢重播,但当时运行应用程序时使用选择索引 0,我不想忽略。我的意思是我想多次忽略该事件,这是示例代码而不是我的实际代码。

标签: c# combobox selectedindexchanged


【解决方案1】:

您可以选择两种方法中的任何一种。

  1. 有一个布尔标志,当您想忽略事件处理程序运行时,将为这些条件设置该标志。并在 SelectedIndexChanged 方法中使用该标志
  2. 只有在您设置了cBox.SelectedIndex=0 之后才订阅该活动,如果这是唯一的情况。

【讨论】:

    【解决方案2】:

    您可以在初始化完成后在代码中订阅事件,而不是在设计器中订阅事件(我希望您现在这样做)。

    private void Form1_Load(object sender, EventArgs e)
    {
        // Init stuff
        cBox.SelectedIndex = 0;
    
        // Event subscription
        cBox.SelectedIndexChanged += cBox_SelectedIndexChanged;
    }
    
    private void cBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        MessageBox.Show("Your Selected Item is :- " + cBox.SelectedItem.ToString());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      相关资源
      最近更新 更多