Winform在线程中怎么让MessageBox显示置顶

浩洁 2015-03-08 01:53:20
private void Start_Load(object sender, EventArgs e)
{
this.TopMost = true;
this.TopLevel = true;
this.bWorker.RunWorkerAsync();//bWorker是一个BackgroundWorker
LoadForm lf = new LoadForm(this.bWorker);//LoadForm为一个等待状态窗体
lf.StartPosition = FormStartPosition.CenterParent;
lf.ShowDialog(this);
}
private void bWorker_DoWork(object sender, DoWorkEventArgs e)
{
//执行代码
System.Windows.Forms.MessageBox.Show("数据错误,请重试!", "错误");
}
像这种情况我应该要怎么让这个消息可以点掉,不然卡着不往下走了
...全文
1185 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
浩洁 2015-03-09
  • 打赏
  • 举报
回复
引用 13 楼 Z65443344 的回复:
可以再请教些问题吗? 原来我是把错误信息记录到根目录下文本文件中的,目前IT说要全部机子都要取消管理员权限 我现在有些不明白没有这个管理员权限会有哪些影响,对创建文件和文件夹或者删除会有影响吗(如果不是系统盘)? 因为我有台电脑在打印Excel文件时我创建零时文件夹并创建零时文件时产生异常了(我没有调试异常原因)。
浩洁 2015-03-09
  • 打赏
  • 举报
回复
引用 13 楼 Z65443344 的回复:
还有,不断的弹窗本来就不是一个友好的设计,尤其是在线程里弹窗,多线程同时执行的时候,可能会造成用户要不断的去点弹窗 而且你想在线程里弹窗,本身就是因为线程执行出问题了吧? 既然出问题了,就别再继续执行了,你可以在线程结束的回调函数里执行,把弹窗交给主线程去处理 此时也应该先关闭等待窗体,再弹错误信息 等待窗体还开着,线程不断弹窗,这设计真的好吗
谢谢你的建议
於黾 2015-03-09
  • 打赏
  • 举报
回复
还有,不断的弹窗本来就不是一个友好的设计,尤其是在线程里弹窗,多线程同时执行的时候,可能会造成用户要不断的去点弹窗 而且你想在线程里弹窗,本身就是因为线程执行出问题了吧? 既然出问题了,就别再继续执行了,你可以在线程结束的回调函数里执行,把弹窗交给主线程去处理 此时也应该先关闭等待窗体,再弹错误信息 等待窗体还开着,线程不断弹窗,这设计真的好吗
浩洁 2015-03-09
  • 打赏
  • 举报
回复
引用 11 楼 Z65443344 的回复:
你的意思是,如果我执行一个读数据库的操作,结果查询条件里时间范围设置的太大了,卡半个小时都没查询出来 然后我连关闭窗体都做不到,只能结束进程? 这样设计思路真的好吗?
你说的也对,这样等待窗体能一直保持在最上面吗?点主窗体会不会挡掉等待窗体。我试试看吧
於黾 2015-03-09
  • 打赏
  • 举报
回复
你的意思是,如果我执行一个读数据库的操作,结果查询条件里时间范围设置的太大了,卡半个小时都没查询出来 然后我连关闭窗体都做不到,只能结束进程? 这样设计思路真的好吗?
浩洁 2015-03-09
  • 打赏
  • 举报
回复
引用 6 楼 u012488787 的回复:
楼主,想问的是这样的么,在做二次开发的时候,有时候需要和主程序交互使用,比如autocad的二次开发,在图上选择, 然后messagebox一个消息窗口,在最上
我的意思是这样: 主窗体运行一个线程的同事调用等待窗体,线程中出现异常是要弹出消息窗 情况:主窗体如果设置了this.TopMost = true; this.TopLevel = true;这样消息窗就会被挡住显示不了 如果主窗体没有设置置顶,消息窗则可以显示
於黾 2015-03-09
  • 打赏
  • 举报
回复
引用 8 楼 mpy2003 的回复:
引用 5 楼 Z65443344 的回复:
等待窗体不要用ShowDialog,改用Show
这样不是可以继续操作主窗体?结果……
当然可以继续操作,你用线程和等待窗体,目的不就是为了不让界面卡死吗 你可以让按钮enable=false防止重复操作啊
浩洁 2015-03-09
  • 打赏
  • 举报
回复
引用 5 楼 Z65443344 的回复:
等待窗体不要用ShowDialog,改用Show
这样不是可以继续操作主窗体?结果……
浩洁 2015-03-09
  • 打赏
  • 举报
回复
引用 4 楼 u011710947 的回复:
引用 3 楼 u011710947 的回复:
[quote=引用 2 楼 mpy2003 的回复:] [quote=引用 1 楼 bdmh 的回复:] 那就别用messagebox了,自己用一个form模拟一下就好了,form的控制就方便多了
我做出来的效果跟MessageBox一样,我需要怎么设置?
把form大小调整得和form一样,去掉最小化最大化的按钮,然后里面照着messagebox的样子画,然后把这个form的topMost属性设成true[/quote] 把form大小调整得和form一样 -> 把form大小调整得和messagebox一样[/quote]你没有理解我的意思,我想要的是不要跟MessageBox效果一样,因为MessageBox达不到想要的效果,会被挡住
gis_99 2015-03-09
  • 打赏
  • 举报
回复
楼主,想问的是这样的么,在做二次开发的时候,有时候需要和主程序交互使用,比如autocad的二次开发,在图上选择, 然后messagebox一个消息窗口,在最上 Microsoft.VisualBasic.Interaction.AppActivate(this.Text); MessageBox.Show("选择的多段线不符合要求,请重新选择!"); return; 我是用这种方式。
於黾 2015-03-09
  • 打赏
  • 举报
回复
等待窗体不要用ShowDialog,改用Show
  • 打赏
  • 举报
回复
引用 3 楼 u011710947 的回复:
引用 2 楼 mpy2003 的回复:
[quote=引用 1 楼 bdmh 的回复:] 那就别用messagebox了,自己用一个form模拟一下就好了,form的控制就方便多了
我做出来的效果跟MessageBox一样,我需要怎么设置?
把form大小调整得和form一样,去掉最小化最大化的按钮,然后里面照着messagebox的样子画,然后把这个form的topMost属性设成true[/quote] 把form大小调整得和form一样 -> 把form大小调整得和messagebox一样
  • 打赏
  • 举报
回复
引用 2 楼 mpy2003 的回复:
引用 1 楼 bdmh 的回复:
那就别用messagebox了,自己用一个form模拟一下就好了,form的控制就方便多了
我做出来的效果跟MessageBox一样,我需要怎么设置?
把form大小调整得和form一样,去掉最小化最大化的按钮,然后里面照着messagebox的样子画,然后把这个form的topMost属性设成true
浩洁 2015-03-08
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
那就别用messagebox了,自己用一个form模拟一下就好了,form的控制就方便多了
我做出来的效果跟MessageBox一样,我需要怎么设置?
bdmh 2015-03-08
  • 打赏
  • 举报
回复
那就别用messagebox了,自己用一个form模拟一下就好了,form的控制就方便多了

111,125

社区成员

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

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

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