c#表单组合框选择ChangeCommitted在选项卡Control选项卡change上触发

c#表单组合框选择ChangeCommitted在选项卡Control选项卡change上触发,c#,winforms,user-interface,C#,Winforms,User Interface,我有一个有三个选项卡的选项卡控件。中间的选项卡有一个组合框,它绑定到数据库以获取其内容。我想根据用户在组合框中的选择更新其他文本字段 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { label1.Text = comboBox1.SelectedItem.ToString(); } 我遇到的问题是,为了做到这一点,我使用了SelectionChangeCo

我有一个有三个选项卡的选项卡控件。中间的选项卡有一个组合框,它绑定到数据库以获取其内容。我想根据用户在组合框中的选择更新其他文本字段

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        label1.Text = comboBox1.SelectedItem.ToString();
    }

我遇到的问题是,为了做到这一点,我使用了
SelectionChangeCommited
事件,该事件应该触发,但是,当我更改选项卡时,它也会触发。为什么会这样以及如何使其停止?

您应该为组合框使用
SelectedIndexChanged
事件

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        label1.Text = comboBox1.SelectedItem.ToString();
    }

您应该使用组合框的
SelectedIndexChanged
事件

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        label1.Text = comboBox1.SelectedItem.ToString();
    }

关闭表单时触发事件并触发SelectedValueChanged的解决方案是使用SelectionChangeCommitted

关闭表单时触发事件并触发SelectedValueChanged的解决方案是使用SelectionChangeCommitted相反。

以后不要在你的问题中添加“你好,谢谢;”以后不要在你的问题中加上“你好,谢谢;”)您好,谢谢您的回答,但是我注意到了其他一些事情,如果我关闭表单(使用右上角的litle x),它也会触发此事件。有什么原因吗?可能是因为当它释放资源时,会清除组合框中的项目列表,从而触发该事件?这是我最好的猜测。那么有没有办法阻止它发起这项活动呢?嗯……我不知道最好的办法是什么。您可以尝试通过重写OnClosing方法取消SelectedIndexChanged事件的注册。您可以使用与注册事件相同的方式取消事件注册,只是使用了“-=”而不是“+=”。出于兴趣,是否有一种方法可以使用(发送方==??)进行注销。我打了一枪,但没有运气,似乎是因为它是通过其他发件人发送的,而不是通过其他发件人发送的。嗨,谢谢你的回答,但是我注意到了其他一些事情,如果我关闭表单(使用右上角的litle x),它也会触发此事件。有什么原因吗?可能是因为当它释放资源时,会清除组合框中的项目列表,从而触发该事件?这是我最好的猜测。那么有没有办法阻止它发起这项活动呢?嗯……我不知道最好的办法是什么。您可以尝试通过重写OnClosing方法取消SelectedIndexChanged事件的注册。您可以使用与注册事件相同的方式取消事件注册,只是使用了“-=”而不是“+=”。出于兴趣,是否有一种方法可以使用(发送方==??)进行注销。我打了一枪,但没有运气,似乎是因为这是一个警告,而不是通过其他发件人。