读书人

线程中调用主窗体的form用来show子窗

发布时间: 2013-02-24 17:58:57 作者: rapoo

线程中调用主窗体的form,用来show子窗体,高分求关注此问题


private void BarCodeToolStripMenuItem_Click(object sender, EventArgs e)
{
Thread td = new Thread(MessageShow);
td.Start();
}
public void MessageShow()
{
MessageForm msg = new MessageForm();
this.Invoke(new MethodInvoker(delegate
{
msg.MdiParent = this;
}));
msg.Show();
}


为什么子窗体 show不出来。求解答?

用msg.ShowDialog()会出现如下错误:
非顶级窗体不能显示为模式对话框。在调用 showDialog 之前应从所有父窗体中移除该窗体。

thread 线程 子窗体show
[解决办法]
msg是线程中创建的,线程结束,线程内部创建的实例就会被销毁
[解决办法]
try
  MessageForm msg = new MessageForm();
this.Invoke(new MethodInvoker(delegate
{
msg.Show();
}));

[解决办法]
线程结束了。那个窗体已经没了。
这么做的目的是干啥?
可以用委托来做。

读书人网 >C#

热点推荐