MessageBox弹出并设置为最前

goyjgoyj 2010-05-06 11:05:01
小弟不才,请教各位大大。
我在程序中弹出了如下MessageBox窗体作为提示信息:

MessageBox.Show(msg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

可是当程序执行到这里时,MessageBox并不总是弹出到最前。于是考虑使用win32的API将弹出的MessageBox手动置最前如下:

int i = FindWindow(null, "提示");
IntPtr hWnd = new IntPtr(i);
SetWindowFront(hWnd);

可是,在调试的时候又发现当程序执行到MessageBox的时候就会停住了,后面的操作都需要等弹出的窗体点OK之后才会执行,那样也就没有意义了。

我考虑能不能将这里改为多线程执行,或者有其他更好的办法?望赐教。
...全文
676 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mngzilin 2010-05-07
  • 打赏
  • 举报
回复
最好自定义个form窗体,在show后,进行focus操作,即个性化,又方便。
mngzilin 2010-05-07
  • 打赏
  • 举报
回复
你新开线程进行MessageBox.Show弹出操作,然后在主线程中
int i = FindWindow(null, "提示");
IntPtr hWnd = new IntPtr(i);
SetWindowFront(hWnd);
=============
不过没多大意义
st200316 2010-05-07
  • 打赏
  • 举报
回复
int i = FindWindow(null, "提示");
IntPtr hWnd = new IntPtr(i);
SetWindowFront(hWnd);
这都用了 还不会用 SendMessage(ah.ToInt32(), (uint)0x0201, 0, 0x012b01bf);
SendMessage(ah.ToInt32(),(uint) 0x0202, 0, 0x012b01bf);
st200316 2010-05-07
  • 打赏
  • 举报
回复
用 Spy++ 之类的工具 先 查下 确认 没有问题 你自己在模拟鼠标点OK 不就行了
njw1028 2010-05-07
  • 打赏
  • 举报
回复
不如用script

Page.RegisterStartupScript("alert", "<script language='javascript'>alert(\"我弹!\")</script>");
CGabriel 2010-05-07
  • 打赏
  • 举报
回复
用这个重载

public static MessageBoxResult Show(
Window owner,
string messageBoxText,
string caption,
MessageBoxButton button
)
goyjgoyj 2010-05-07
  • 打赏
  • 举报
回复
没人回答么
goyjgoyj 2010-05-06
  • 打赏
  • 举报
回复
我的意思是MessageBox.Show弹出的对话框并不总是在最前面的,所以我想手动把他置为最前
zhoubupt 2010-05-06
  • 打赏
  • 举报
回复
DialogResult choice=MessageBox.Show(msg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
if(choice==DialogResult.Yes)
{
.......
}
程序海哥 2010-05-06
  • 打赏
  • 举报
回复
需求表达不清楚,无法作答
threenewbee 2010-05-06
  • 打赏
  • 举报
回复
API MessageBox,第一个参数的handle指定为你的主窗口。
cdd1012 2010-05-06
  • 打赏
  • 举报
回复
不清楚

110,539

社区成员

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

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

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