C#中的模式对话框与非模式对话框

heihei1018 2012-11-01 11:08:11
我有一个主窗体Main,现在在main中点击按钮出现非模式对话框child,代码:child.show();
然后再child中执行messagebox.show(),child窗体和main窗体就都不能再使用了
但是需求是在messagebox弹出时,child不能使用,但是main还是可活动的,
请问大神们,如何处理?静等答案啊~~~
...全文
297 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
heihei1018 2012-11-01
  • 打赏
  • 举报
回复
求解答啊,自己顶~~
heihei1018 2012-11-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

Form1 f1 = new Form1();
Thread th = new Thread(() => { f1.ShowDialog(); });
th.Start();

使用线程去显示child窗口就可以了。
[/Quote]
谢谢回复,想请问有没有其他的方法
因为我在child里面是开了一个线程的,这个线程又通过委托事件去控制了main,
如果开两层线程,会不会有什么问题或者后遗症?
Kation 2012-11-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 1 楼 的回复:

发你的child.show()那段代码出来

这个也要发吗?晕
main里面
private void bt_click(...)
{
Child child=new Child();
child.show();
}
child里面
private void bt_click(...)
{
MessageBox.s……
[/Quote]
年把不弄过WinForm了
现在都是WPF

我记得以前WinForm不能直接Show出另一个窗体的。。。
要用STA线程标记什么的。。。

你试试上面那个回复的方法吧
heihei1018 2012-11-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

发你的child.show()那段代码出来
[/Quote]
这个也要发吗?晕
main里面
private void bt_click(...)
{
Child child=new Child();
child.show();
}
child里面
private void bt_click(...)
{
MessageBox.show("");
}
Hauk 2012-11-01
  • 打赏
  • 举报
回复
Thread th = new Thread(() => { Application.Run(new Form1()); });
th.Start();

也可以这样。


在Form1里面弹出messageBox,mainForm依然可以用。Form1不能用。
Hauk 2012-11-01
  • 打赏
  • 举报
回复
Form1 f1 = new Form1();
Thread th = new Thread(() => { f1.ShowDialog(); });
th.Start();

使用线程去显示child窗口就可以了。
Kation 2012-11-01
  • 打赏
  • 举报
回复
发你的child.show()那段代码出来
Hauk 2012-11-01
  • 打赏
  • 举报
回复
不会有问题的,注意Invoke的使用即可。

110,538

社区成员

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

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

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