我想创建一个面板,一次只能启用一个控件。 它应该按照单选按钮的方式工作。如何创建独占面板
的想法是这样的事情:
class XClusivePanel : Panel
{
// Init code
// Use this in order to add Exclusive Controls
void AddControl(Control c)
{
if(! Controls.Contains(c))
{
Controls.Add(c);
c.Enabled = false;
c.EnabledChanged += new System.EventHandler(this.control_EnabledChanged);
}
}
// Avoid more than one control enabled at a time.
private void control_EnabledChanged(object sender, EventArgs e)
{
Control s = (Control)sender;
if(s.Enabled == true)
{
foreach(Control c in Controls)
{
if(s != c)
{
s.Enabled = false;
}
}
}
}
}
这段代码的问题是,如果你的代码中创建您的形式,它仅适用;如果使用设计器添加组件,则不起作用。
有什么想法?顺便说一下,我正在使用.NET CF.
如果其他所有功能都被禁用,用户如何切换控件? – LarsTech 2012-03-16 19:55:19
@LarsTech:程序的流程将在需要时启用控件。但是,当我在代码中的某处执行someControl.Enabled = true时,它应该自动禁用先前的活动控件。 – Cristiano 2012-03-16 19:58:28