写一个通用方法。
传入的参数,第一个默认是checkbox,后边的可以是textbox、也可以是combbox、也可以是日期控件。而且除了checkbox的数量固定为一个,其他参数传入的数量都不固定
如果checkbox是选中的呢,textbox、combbox、等等其他控件 全部为可写的。
如果checkbox没有选中的呢,textbox、combbox、等等其他控件 全部为只读的。
问如何实现这个方法?

解决方案 »

  1.   

    void aa(CheckBox cb,list<Control> Cs)
    {
    if(cb.Checked)
    {
    foreach(Control c in cs)
    {
    c.readobly=false;
    }
    }
    else
    {
    foreach(Control c in cs)
    {
    c.readobly=true;
    }
    }
    楼主可以根据这个来调整吧,可能大小写没区分
      

  2.   

    做个自定义控件,控件分为checkbox和后面未知数量的控件部分,将checkbox放置在panel1中,将后面添加的控件放在panel2中,点击checkbox的事件中直接修改panel2的Enable属性,为true即可修改内部所有控件,为false则禁用内部所有控件。
      

  3.   

    public void SetEnabled(CheckBox cb, params Control[] controls)
    {
        foreach (var item in controls) item.Enabled = cb.Checked;
    }
      

  4.   

    void SetControl(CheckBox checkBox, params Control[] controls)
      

  5.   


    public void Method(CheckBox checkbox, params Control[] controls)
            {
                if (checkbox.Checked)
                {
                    foreach (var item in controls)
                    {
                        var propertyInfo = item.GetType().GetProperty("ReadOnly");
                        if (propertyInfo == null)
                            continue;
                        propertyInfo.SetValue(item, false, null);
                    }
                }
                else
                {
                    foreach (var item in controls)
                    {
                        var propertyInfo = item.GetType().GetProperty("ReadOnly");
                        if (propertyInfo == null)
                            continue;
                        propertyInfo.SetValue(item, true, null);
                    }
                }
            }
     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();            TestClass a = new TestClass();            a.Method(new CheckBox(), new TextBox(), new ComboBox().....);
            }
        }