C# WinForm 多线程中弹出MessageBox阻塞窗口的实现方法
前些天写了个程序,为了不造成程序窗口的假死,用了多线程来处理一些事情,完了之后弹出MessageBox提示,但是发现弹出来的MessageBox提示框不在程序窗口的最前端显示,一不小心点到主窗口,弹出框就被挡住了,这并不符合设计要求,于是找了如下方法:
1 2 3 4 5 6 7 8 9 10 | public void ShowMessage( string msg) { this .Invoke( new MessageBoxShow(MessageBoxShow_F), new object [] { msg }); } delegate void MessageBoxShow( string msg); void MessageBoxShow_F( string msg) { MessageBox.Show(msg, "提示信息" , MessageBoxButtons.OK, MessageBoxIcon.Information); } |
调用方法很简单:
1 | ShowMessage( "弹出提示示例" ); |
这样弹出的提示框就跟是主窗口弹出的一样,阻塞了窗口,要点击后才能对主窗口进行操作。
由此引申出:如果想MessageBox弹出框不阻塞窗口的话,可以用多线程实现。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)