2013-08-19 27 views
2

所以,我一直在寻找的计算器和其他互联网论坛和知识基础,但槽类似主题到目前为止,我没有运气试图解决这个问题,我我一直在挣扎整整一周。下面是代码:设置窗体休息MdiParent属性/阻止其显示的情况下烧制而成

private void matrículasToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     Form1 form1 = new Form1(); 
     form1.Show(); 
     form1.MdiParent = this; // this == the main form of the aplication, wich has IsMdiParent property set to true. 
    } 

如果我参加了“form1.MdiParent =这个” Form1的显示事件通常会触发,执行所有的处理程序的内容,但如果我让它出现,显示事件form1不会触发(我确实设置了分隔符,但都没有触发)。

奇怪的是,如果我使用Load事件,而不是显示的,一切工作正常,但我交换如图所示为负载会碰坏:(有点害怕,如果。

+0

我发现它,更新了我的回答 –

回答

4

试试这个代码

Form1 form1 = new Form1(); 
//Subscribe event here 
form1.MdiParent = this; 
form1.Show(); 

这对我的作品

我不知道为什么你的代码不能正常工作,我会回来,一旦我得到了答案。

编辑:我现在得到了答案。

ISynchronizationInvoke's成员(InvokeBeginInvoke)由Control类实现如下。

  1. 获取其创建窗口线程的上下文。
  2. 生成使用RegisterWindowMessage
  3. 一个新的窗口MESSAGEID封装我们作为一个参数ThreadMethodEntry通过委托其添加到控件的内部Queue
  4. 帖子消息线程队列使用PostMessage
  5. 把手WndProc通过RegisterWindowMessage返回MESSAGEID监听messageId,然后取消队列ThreadMethodEntry并调用委托。

这里出了什么问题?

Form1中Form1中=新Form1中(); form1.Show(); form1.MdiParent = this;

Form.Show某种程度上导致调用OnLoad方法,那就是OnShown被称为异步使用BeginInvoke

if (base.IsHandleCreated) 
{ 
    base.BeginInvoke(new MethodInvoker(this.CallShownEvent));//reflected code 
} 

所以贴WindowMessage接收设置form1.MdiParent = this;这反过来又迫使控制前Destroy它的处理和ReCreate新手柄。

DestroyHandle方法由得到它使用PeekMessage函数吞张贴消息,然后枚举所有元素Queue,并将其作为状态而不调用的委托,但其标记扔ObjectDisposedException完成。

Form1 form1 = new Form1(); 
form1.Show(); 
Action del =() => 
{ 
    Console.WriteLine("This will never be called");//our custom delegates too fails to be invoked 
}; 
var res = form1.BeginInvoke(del); 
//after some more code 
form1.EndInvoke(res);//throws `ObjectDisposedException` which was marked previously 
form1.MdiParent = this; 

投掷ObjectDisposedException("Control")其实是误导是不是?

注意:您可以在form1.MdiParent = this;之前使用Application.DoEvents();轻松解决此问题,因为DoEvents会立即处理所有未决消息。

+0

OMG,非常感谢你!,不能相信我一直在为这个事情奋斗一周而解决方案很简单:O – user1126775

+0

哦,男人,一周是巨大的时间。但欢呼你现在得到它。我会让你知道为什么一旦找到它就无法工作。我很好奇,为什么它不起作用。 –

相关问题