2010-10-13 39 views
0

我有一个winform打开(ShowDialog)其他winforms。如何获取调用者winform

有没有办法从打开的winform中获取第一个winform而不将它作为参数传递或使用“public static”解决方案?

编辑:没有注意到我在用户控件中,我怎么能得到我的表单?

在此先感谢。

回答

0

this.FindForm()将获得承载您的自定义控件的表单。一旦你得到了表格,你可以使用.Owner属性。

恕我直言。

+0

FindForm返回NULL。 – 2010-10-13 10:45:18

+0

我认为FindForm只在我们做了.Controls.Add的时候才返回表单,但是在这里我们只是创建了一个表单并打开了它。 – 2010-10-13 10:51:44

+0

如果是这样,请尝试迭代.Parent属性,直到找到父链中的第一个Form对象。 P.S.这很奇怪,FindForm()返回null ... – 2010-10-13 10:52:54

0

表单的所有者属性如何?

+0

非常感谢,但请参阅编辑。 – 2010-10-13 09:28:42

0

我想出的唯一方法是将Paint事件挂在UserControl中。我知道,这是不好的做法,但它有效。我不自豪... :)

private bool _uglyOnlyDoSomethingFirstTimeInPaintEventFlag = false; 
    private void btnDestination_Paint(object sender, PaintEventArgs e) 
    { 
     if (!_uglyOnlyDoSomethingFirstTimeInPaintEventFlag) 
     { 
      _uglyOnlyDoSomethingFirstTimeInPaintEventFlag = true; 
      //...do FindForm() here and you should get the right form 
     } 
    } 
相关问题