有关WinForm的
我做了一个类:
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 中。
错误提示:确保没有无限循环或无限递归.
调用这个方法的程序段里没有循环和递归啊,不知道是哪儿出问题了,请大家帮忙侃侃
问题点数:40、回复次数:7Top
1 楼jzyray(晶)回复于 2006-05-02 21:05:22 得分 5
Control初始化时会初始化一个Table_Form2:Table_Form2 form2 = new Table_Form2();
而Table_Form2初始化时又会初始化一个Control:Control S = new Control();
这就是死循环。Top
2 楼terry1021_82(小狐狸)回复于 2006-05-02 22:44:21 得分 0
那怎么解决这个问题呢Top
3 楼diandian82(点点(nothing))回复于 2006-05-02 22:51:11 得分 5
这本来就是一个死循环,除非把其中一个声明成静态的不知道可以不?你试试Top
4 楼cxchao_online(cxchao)回复于 2006-05-03 00:40:53 得分 5
这是一个死循环
为什么你要这样写呢
换一种方法不可以吗Top
5 楼Knight94(愚翁)回复于 2006-05-03 09:29:48 得分 25
修改你的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);Top
6 楼Knight94(愚翁)回复于 2006-05-03 09:31:26 得分 0
不过如果你的control类只是完成以上功能的话,不建议单独写到一个类中,因为破坏了类的封装。Top
7 楼terry1021_82(小狐狸)回复于 2006-05-03 12:30:22 得分 0
大家的建议让我收益菲浅
谢谢大家Top




