问题描述
就是子窗体的子窗体的嵌套问题。最外层的是整个CS结构的大窗体A,在点击菜单栏,出现第一个子窗体B,接着B的打印功能,又出现一个水晶报表的窗体C。我不清楚的是不是C是B的子窗体,还是A的子窗体。我等下给出代码。关键是在我关闭了C之后,要关闭A的时候,没办法关闭A。这时B已经不见了。是不是因为B没有释放啊?B的构造函数是:publicxszxzm(Formf1){parentForm=f1;this.MdiParent=parentForm;InitializeComponent();}C的构造函数是:publicSelectPrintForm(Formf1,stringxh){this.MdiParent=f1;InitializeComponent();。。。}在线等,谢谢。新手。。。
解决方案
解决方案二:
Bhasbeenhidden?
解决方案三:
C关掉的时候B.Show一下,把B显示出来
解决方案四:
你在B窗体里,怎么样把A给SHOW出来的?
解决方案五:
你在B窗体里,怎么样把C给SHOW出来的?说错了
解决方案六:
我错了。C.SHOW的时候,B已经DISPOSE()了。我刚才调试,也看到了B.DISPOSE了。privatevoidbutton1_Click(objectsender,System.EventArgse){Cpf=newC(parentForm,m_xh);pf.Show();this.Dispose();}这是在B窗体里面点击按钮,弹出C窗口的代码。在这里已经把B给DISPOSE了。不过,我注意到一个问题,因为我做的是两个打印界面。这里设置为B1,B2。如果只打开其中一个,比如B1的时候,用B1调用C1之后,是可以关掉A的。如果是打开B1,调用C1,之后,在打开B2,调用C2,之后,就没办法关掉A1了。但是在打开C2的时候,也是有把B2.DISPOSE.如果把一个水晶报表,直接用左上表的叉关掉,算是DISPOSE了吧.
解决方案七:
你如果都用上面的那一段代码的话,应该没有问题的。你是不是你设置了其他的东西了
解决方案八:
你如果都用上面的那一段代码的话,应该没有问题的。你是不是还设置了其他的东西了.为什么关闭别一个窗体的进修要用左上角的叉呢?但是在打开C2的时候,也是有把B2.DISPOSE.如果把一个水晶报表,直接用左上表的叉关掉,算是DISPOSE了吧.
解决方案九:
就算dispose掉也应该是没问题的,进行一系列的操作之后你是无法focuson主窗体A还是关不掉A?
解决方案十:
也是哦,但是怎么才能FOCUSONA呢?我就是直接把那个水晶报表直接关掉的呢。
解决方案十一:
这个涉及到父窗体的问题,如果你把B,C的父窗体都设成A的话,应该是没有问题的。我认为出现上述情况的原因是:A是B的父窗体,B是C的父窗体,当关掉C之后回溯到父窗体B,但此时B窗体已经不存在了。造成了无法FocusOnA窗体,而且无法进行下一步操作。至于具体的问题就只有自己实际分析了
解决方案十二:
上面说的有道理。我也想过。可是如果那样的话,要怎么做呢?先不要DISPOSEB。觉得奇怪的是,在其他的打印窗口,代码是一样的。可是他们可以操作。先试试。谢谢先
解决方案十三:
我把DISPOSEB注释掉了。可是打印窗口出现,在关掉C后,我没看到B窗口。还是不行的。