【发布时间】:2010-03-24 09:07:49
【问题描述】:
如何从 main () 控制我的所有表单
Form1 frm1 = new Form1();
Form1 frm2 = new Form1();
Form1 frm3 = new Form1();
Application.Run(frm1); // This way form-control goes to the frm1.
// In frm1 i have to write
frm1.Clicked += ()=>frm2.Show;
// I want the form-controlling style more explicitly
// I dont want to use Application.Run()
frm1.Show();
frm1.Clicked += frm2.Show();
form.ShowDialog () 有很大帮助,但执行堆栈可能会溢出。 Form.Show 和 Form.Hide 方法在设置应用程序类时运行。 在 Application.Run (Form) 方式中,总有一个主窗体。我不想要这个。您在此问题中使用的任何其他方法
【问题讨论】:
-
我不明白你的问题。请准确说明您想要实现的目标。
-
你将不得不解释更多你想要做什么。 “控制所有表单”(如何控制它们?你想用它们做什么?)和“执行堆栈可能溢出”是什么意思。在您的伪代码中,Show 和 ShowDialog 之间没有区别,只是在您使用 ShowDialog 时执行将停止,直到表单关闭。
-
但是当我使用 showdialog 时,stacktrace 的长度开始变长。我可以看到此跟踪上的所有表单导航。它可能导致 stackoverflow 异常。
-
如果您想要的是没有“主表格”的情况,这是可能的,但您需要澄清问题,正如其他人所评论的那样。
-
从
ApplicationContext继承 - 请参阅 here。