在用户控件内的 ComboBox 上调用 SelectedIndexChanged

Call SelectedIndexChanged on ComboBox within User Control

我正在使用 .NET 4 并尝试创建一个 CustomControl,但是当我将此 CustomControl 添加到我的 Windows 表单时,我想访问我的用户控件中 ComboBox 的 SelectedIndexChanged。

基本上,我想要的是当组合框触发 Selected IndexChanged 时,它会 运行 Windows 表单中的一些代码。

以下是我目前的资料。

public partial class CustomControl : UserControl

...

private void uiComboBox_SelectedIndexChanged(object sender, EventArgs e)
{

}

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

任何帮助将不胜感激。

如果您的 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 class 中,我添加了以下代码,以便在将组合框上的 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 属性,这会在下面创建我想要的 event/method。

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

我想我会把它留在这里,因为它可能会在将来帮助其他人。