在用户控件的组合框上调用SelectedIndexChanged

本文关键字:调用 SelectedIndexChanged 组合 用户 控件 | 更新日期: 2023-09-27 18:17:57

我正在使用。net 4并尝试创建一个CustomControl,但是当我将这个CustomControl添加到我的Windows窗体时,我想要访问我的用户控件中的ComboBox的SelectedIndexChanged

基本上,我想要的是当组合框触发选定的IndexChanged时,它将在Windows窗体中运行一些代码。

下面是我到目前为止写的。

public partial class CustomControl : UserControl
...
private void uiComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
}

做我想做的事的最好方法是什么?

在用户控件的组合框上调用SelectedIndexChanged

如果uiComboBox放置在用户控件(名为CustomControl)中,那么您可以在构造函数中连接处理程序,如下所示:

uiComboBox.SelectedIndexChanged += uiComboBox_SelectedIndexChanged;

另一方面,如果uiComboBox放置在CustomControl之外,则需要使用上述技术处理事件,然后手动调用CustomControl中的方法。

public class MyForm:Form {
    MyForm(){
        uiComboBox.SelectedIndexChanged += uiComboBox_SelectedIndexChanged;
    }
    private void uiComboBox_SelectedIndexChanged(object sender, EventArgs e)       {
        customControl.InvokeSomeMethod(xxx);
    }
}

在我的CustomControl类中,我添加了以下代码,以便在combox上的SelectedIndexChanged将被我的自定义控件作为控件添加到窗体上时拾取。

    public event EventHandler SelectedCBIndexChanged;
    ...
    public CustomControl()
    {
        InitializeComponent();
        this.uiComboBox.SelectedIndexChanged += new System.EventHandler(this.uiComboox_SelectedIndexChanged);
    }

    protected void uiComboox_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (SelectedCBIndexChanged != null)
            SelectedCBIndexChanged(sender, e);
    }

然后在表单上,我添加了自定义控件,并在设计器中启用SelectedCBIndexChanged属性,该属性创建了下面的事件/方法,这就是我想要的。

    private void customControl_SelectedCBIndexChanged(object sender, EventArgs e)
    {
        // Do what I want
    }  

我想我就把这个留在这里,因为它将来可能对别人有帮助。