在User Control中的ComboBox上调用SelectedIndexChanged

时间:2015-10-15 04:48:22

标签: c# .net combobox user-controls

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

基本上,我想要的是当Combo Box触发Selected IndexChanged时,它将在Windows窗体中运行一些代码。

以下是我到目前为止的情况。

public partial class CustomControl : UserControl

...

private void uiComboBox_SelectedIndexChanged(object sender, EventArgs e)
{

}

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

如果您的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);
    }
}

答案 1 :(得分:0)

在我的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);
    }

然后在Form上,我添加了我的自定义控件并在Designer中启用了SelectedCBIndexChanged属性,该属性在下面创建了我所追求的事件/方法。

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

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