我正在使用 .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 类中,我添加了以下代码,以便当将其作为控件添加到表单上时,我的自定义控件将拾取组合框中的 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
}
我想我会把它留在这里,因为它将来可能会帮助其他人。
我本来应该发表评论,但这些选项抛出 你调用的对象是空的。'为组合框设置事件时出错。