日期:2014-05-17  浏览次数:20867 次

线程中调用主窗体的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();
            }));

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