MessageBox.show()弹出的对话框怎么能通过另一个线程关闭

longbow74 2005-01-20 01:45:45
up
...全文
256 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
luminrong 2005-02-01
  • 打赏
  • 举报
回复
注册事件回调是可以的,我现在做得很粗糙,有更好的方便共享之;
1、定义窗体全局变量
private System.Threading.TimerCallback timerDelegate = null;
private System.Threading.Timer _TimerTest = null;
2、实现弹出对话框与关闭对话框
private void timeMonitor(Object state)
{
MessageBox.Show("Test!");
}
private void stopTime(Object state)
{
_TimerTest.Dispose();
MessageBox.Show("Successful!");
}
3、用个按钮或者打开窗体实现
timerDelegate = new System.Threading.TimerCallback(timeMonitor);
_TimerTest = new System.Threading.Timer(timerDelegate,null,0,System.Threading.Timeout.Infinite);
timerDelegate = new System.Threading.TimerCallback(stopTime);
System.Threading.Timer tt = new System.Threading.Timer(timerDelegate,null,100000,System.Threading.Timeout.Infinite);
实现是可以,但方法感觉不太好。
fanweiwei 2005-01-20
  • 打赏
  • 举报
回复
关注ing
Fibona 2005-01-20
  • 打赏
  • 举报
回复
自已做一个form用 ShowDialog模式,显示就可以了。
北京的雾霾天 2005-01-20
  • 打赏
  • 举报
回复
如果要很好的处理这种事情,最好自己来用一个Form模拟这个消息框,用ShowDialog模式显示出来就是了.
北京的雾霾天 2005-01-20
  • 打赏
  • 举报
回复
用MessageBox的Show方法弹出的对话框一般由用户来操作而关闭,如果要在程序里关闭,应再加一个另外的不受这个模态对话框限制的线程来处理它,思路也只是在这个线程里用FindowWindow来找到这个窗体,然后向它发一个按键消息"WM_KEYDOWN" 13来关闭.主要代码如下:

IntPtr handle = FindWindow(NULL,"这里填那个消息框的Caption内容");
if(handle != IntPtr.Zero)
{
PostMessage(handle,WM_KEYDOWN,13,0);//或用SendMessage
}
longbow74 2005-01-20
  • 打赏
  • 举报
回复
没有用过,能详细说一下吗
phoubes 2005-01-20
  • 打赏
  • 举报
回复
用注册事件回调可以

110,535

社区成员

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

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

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