兔八哥极品软件园    运行: 4501天 | 文章:640 篇 | 评论:506 条 | 碎语:1条

c#多线,程子线程委托主线程MessageBox.Show()方法

作者:admin 发布于:2012-3-29 14:38 Thursday 分类:.NET


一、MessageBox.Show(this,e.ErrorMsg, "错误提示", MessageBoxButtons.OK,MessageBoxIcon.Error);

这种情况是在这个方法是以事件形式来给另一线程操作的吧!


二、MessageBox过程放到 form里面,用一个函数封装起来

在线程里面 BeginInvoke它

还有,MessageBox.Show有个参数,是IWin32Window owner
MSDN里面这么说:

可 以使用 owner 参数指定一个特定对象,该对象实现 IWin32Window接口,而该接口充当对话框的顶级窗口和所有者。消息框是一种模式对话框,这表示除了该模式窗体上的对象之外,不能对其他对象进行 任何输入(通过键盘或鼠标单击)。该程序必须隐藏或关闭有模式窗体(通常是响应某个用户操作),然后才能对另一窗体进行输入。

在消息框中最多可以有三个按钮。

public static DialogResult Show (
IWin32Window owner,
string text,
string caption,
MessageBoxButtons buttons,
MessageBoxIcon icon,
MessageBoxDefaultButton defaultButton
)
 Thread tr = new Thread(new ThreadStart(SendMessage));
           tr.Start();

       private void SendMessage()
       {
           //方法一和方法二原理一樣,只是寫法部同
           //方法一:
           this.Invoke((MethodInvoker)(delegate
           {
               MessageBox.Show(this, "haha", "错误提示", MessageBoxButtons.OK,MessageBoxIcon.Error);
           }));

           //方法二:
           ShowMessage("haha");
       }

       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);
       }

标签: MessageBox


Powered by 兔八哥极品软件 苏ICP备12049267号 sitemap