我想创建一个面板,一次只能启用一个控件。 它应该只用单选按钮的方式。
这个想法是这样的:
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。
答案 0 :(得分:0)
为什么不使用表单加载事件(或类似)来禁用表单上的所有控件(包括设计器添加的控件)。以编程方式添加的那些将由您的AddControl
处理