作者hamsters (hamster)
看板C_Sharp
标题Re: [问题] Form一定要Application.run()吗?
时间Tue Jun 10 00:27:36 2008
Application.Run() 跟 Form.ShowDialog() 很像,都是显示视窗并进入讯息回圈,所以
f1 会显示是因为使用 fi.ShowDialog(),而且会在关闭时离开 ShowDialog 方法,
依此类推要显示 f2 的就至少要呼叫 Application.Run(f2) 或 f2.ShowDialog()
其中一个。
不过 Application.Run 只能使用一次 (就是不能两层以上的讯息回圈),所以通常是程
式的第一个视窗或主视窗才会用 Application.Run(),其他视窗就用 ShowDialog()。
※ 引述《teamspike (市政府7F)》之铭言:
: hi各位大大,小弟又来罗
: 这次也是知道可以这样用,却不知道为什麽...
: 小弟设计两个form,分别是form1和form2
: 只是要实作一个简单的登入系统
: 就form1是登入窗口,登入成功以後切换到form2这样
: 假设form1的按钮设计好了,则具体的实作方式是这样的
: static void Main()
: {
: form1 f1 = new form1();
: if (f1.ShowDialog() == DialogResult.OK) //按下f1的确认钮
: {
: form2 f2 = new form2();
: System.Run(f2);
: }
: else
: MessageBox.Show("Login failed.");
: }
: 这是可行的,而且f1在登入成功以後会自行消失,只剩下f2喔
: 非常符合小弟的需求。
: 问题来了,
: System.Run()代表开始执行目前执行绪上的标准应用程式讯息回圈,
: 并显示指定的表单。
: 1. f1只是把Form1实体化的一个物件,并没有System.Run(f1);
: 为什麽可以正常显示,而且使用後自己消失呢?
: 2. 如果把System.Run(f2)拿掉,执行时就不会出现f2喔,
: 那f2为什麽就不能正常显示呢?
: 虽然可以执行,还是很龟毛的想要知道为什麽呢.....=.=a
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.70.12