当前位置: 代码迷 >> C# >> 线程中调用主窗体的form,用来show子窗体,高分求关注此有关问题
  详细解决方案

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

热度:3270   发布时间:2013-02-25 00:00:00.0
线程中调用主窗体的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();
            }));

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