我做了一个类:
public class Control
    { 
      Table_Form2 form2 = new Table_Form2();      public void Table2_Enable(bool flag)
       {
           switch (flag)
           {
               case false:                   form2.TextBox26.ReadOnly = true;
                   form2.TextBox27.ReadOnly = true;
                   form2.TextBox28.ReadOnly = true;                   form2.RichTextBox2.ReadOnly = true;
                   form2.RichTextBox3.ReadOnly = true;
                   form2.RichTextBox4.ReadOnly = true;
                   form2.RichTextBox5.ReadOnly = true;
                   form2.RichTextBox6.ReadOnly = true;                   break;
               case true:                   form2.TextBox26.ReadOnly = false;
                   form2.TextBox27.ReadOnly = false;
                   form2.TextBox28.ReadOnly = false;                   form2.RichTextBox2.ReadOnly = false;
                   form2.RichTextBox3.ReadOnly = false;
                   form2.RichTextBox4.ReadOnly = false;
                   form2.RichTextBox5.ReadOnly = false;
                   form2.RichTextBox6.ReadOnly = false;                   break;
           }
       }然后在窗体中:
        Control S = new Control();        private void Table_Form2_Load(object sender, EventArgs e)
        {
            S.Table2_Enable(false);
        }调试时候返回错误:
未处理的“System.StackOverflowException”类型的异常出现在 信息管理系统.exe 中。错误提示:确保没有无限循环或无限递归.调用这个方法的程序段里没有循环和递归啊,不知道是哪儿出问题了,请大家帮忙侃侃

解决方案 »

  1.   

    Control初始化时会初始化一个Table_Form2:Table_Form2 form2 = new Table_Form2();而Table_Form2初始化时又会初始化一个Control:Control S = new Control();这就是死循环。
      

  2.   

    修改你的control类如下:
    public class Control
    {
    public static void Table2_Enable(Table_Form2 form2, bool flag)
    {
    switch (flag)
    {
    case false: form2.TextBox26.ReadOnly = true;
    form2.TextBox27.ReadOnly = true;
    form2.TextBox28.ReadOnly = true; form2.RichTextBox2.ReadOnly = true;
    form2.RichTextBox3.ReadOnly = true;
    form2.RichTextBox4.ReadOnly = true;
    form2.RichTextBox5.ReadOnly = true;
    form2.RichTextBox6.ReadOnly = true; break;
    case true: form2.TextBox26.ReadOnly = false;
    form2.TextBox27.ReadOnly = false;
    form2.TextBox28.ReadOnly = false; form2.RichTextBox2.ReadOnly = false;
    form2.RichTextBox3.ReadOnly = false;
    form2.RichTextBox4.ReadOnly = false;
    form2.RichTextBox5.ReadOnly = false;
    form2.RichTextBox6.ReadOnly = false; break;
    }
    }
    }调用改成如下:
    Control.Table2_Enable( this, false);
      

  3.   

    不过如果你的control类只是完成以上功能的话,不建议单独写到一个类中,因为破坏了类的封装。