我正在尝试使用主窗口面板中的用户控件禁用主窗体上的某些按钮。由于继承,我认为这段代码不起作用。
MainWindow mW = new MainWindow();
mW.button1.Enabled = false;
mW.button2.Enabled = false;
mW.button3.Enabled = false;
mW.button4.Enabled = false;
mW.button5.Enabled = false;
mW.button6.Enabled = false;
mW.button7.Enabled = false;
请提供其他方法。
答案 0 :(得分:0)
您可以使用this.FindForm()
获取对包含用户控件的表单的引用,将该引用强制转换回MainForm
,并控制MainForm
上的按钮(假设它们是{ {1}}或internal
)
但是,这可能是错误的。
更好的方法是在用户控件中创建一个事件,将主表单列在该事件中,并在事件处理程序中更改主表单中的任何内容。
这样,您的用户控件就不会绑定到特定的表单,您也可以以其他形式重用它。
您可以继承public
类以使用该事件发送特定数据 - 在这种情况下,是一个布尔值,指示是应该启用还是禁用按钮:
EventArgs
然后,在您的用户控件中:
public class MyEventArgs : EventArgs
{
public MyEventArgs(bool enable)
{
Enable = enable;
}
public bool Enable {get;}
}
在主表单中,您订阅了该活动:
public event EventHandler<MyEventArgs> SomethingHappened;
// to raise it:
SomethingHappend?.Invoke();
在事件处理程序中启用/禁用按钮:
MyUserControl.SomethingHappened += MyUserControl_SomethingHappened;