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