WinForm模态窗体

HappyRibbit 2014-04-09 09:40:31
有三个窗体FrmOne、FrmTwo、FrmThree。首先在FrmOne中FrmTwo.Show()显示FrmTwo,然后在FrmTwo中FrmThree.ShowDialog()显示FrmThree后,应该是FrmThree的模态窗体只是对于FrmTwo窗体,但是怎么FrmOne窗体也不能操作了?
...全文
300 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhou23141622 2014-04-09
  • 打赏
  • 举报
回复
在FrmOne里把FrmTwo.show改成Application.Run(FrmTwo);
youzelin 2014-04-09
  • 打赏
  • 举报
回复
在 FrmThree.Show() 的时候给他加个参数,这样他就会在这个 Owner 的最前面显示

FrmThree.Show(FrmTwoInstance);
six-years 2014-04-09
  • 打赏
  • 举报
回复
引用 4 楼 llhccyc 的回复:
[quote=引用 3 楼 Q1092926267 的回复:] FrmOne不能操作是因为FrmThree.ShowDialog() 如果改成FrmThree.Show()是没问题的
这样是可以,但是FrmTwo会有一个后台线程执行一个Web请求和操作。FrmThree就是给用户一个等待提示的界面。[/quote] FrmThree f=null; private void FrmTwo_Load(object sender, EventArgs e) { Thread t = new Thread(new ThreadStart(show)); t.Start(); Thread t1 = new Thread(new ThreadStart(NewMethod)); t1.Start(); } void show() { f = new FrmThree(); f.ShowDialog(); } void NewMethod() { 处理中。。。 处理完成关闭FrmThree(); f.close(); }
six-years 2014-04-09
  • 打赏
  • 举报
回复
引用 4 楼 llhccyc 的回复:
[quote=引用 3 楼 Q1092926267 的回复:] FrmOne不能操作是因为FrmThree.ShowDialog() 如果改成FrmThree.Show()是没问题的
这样是可以,但是FrmTwo会有一个后台线程执行一个Web请求和操作。FrmThree就是给用户一个等待提示的界面。[/quote] 那就用多线程处理呗 Thread t = new Thread(new ThreadStart(show)); t.Start(); Thread t1 = new Thread(new ThreadStart(NewMethod)); t1.Start();
HappyRibbit 2014-04-09
  • 打赏
  • 举报
回复
引用 3 楼 Q1092926267 的回复:
FrmOne不能操作是因为FrmThree.ShowDialog() 如果改成FrmThree.Show()是没问题的
这样是可以,但是FrmTwo会有一个后台线程执行一个Web请求和操作。FrmThree就是给用户一个等待提示的界面。
six-years 2014-04-09
  • 打赏
  • 举报
回复
FrmOne不能操作是因为FrmThree.ShowDialog() 如果改成FrmThree.Show()是没问题的
HappyRibbit 2014-04-09
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
这样显示不累吗,建议放到Tab页 里。
呵呵。是这样的,FrmThree就是一个等待后台处理的弹出提示。
exception92 2014-04-09
  • 打赏
  • 举报
回复
这样显示不累吗,建议放到Tab页 里。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧