如何创建专属面板

时间:2012-03-16 19:53:04

标签: c# .net-cf-3.5

我想创建一个面板,一次只能启用一个控件。 它应该只用单选按钮的方式。

这个想法是这样的:

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。

1 个答案:

答案 0 :(得分:0)

为什么不使用表单加载事件(或类似)来禁用表单上的所有控件(包括设计器添加的控件)。以编程方式添加的那些将由您的AddControl

处理