我有一个winform打开(ShowDialog)其他winforms。如何获取调用者winform
有没有办法从打开的winform中获取第一个winform而不将它作为参数传递或使用“public static”解决方案?
编辑:没有注意到我在用户控件中,我怎么能得到我的表单?
在此先感谢。
我有一个winform打开(ShowDialog)其他winforms。如何获取调用者winform
有没有办法从打开的winform中获取第一个winform而不将它作为参数传递或使用“public static”解决方案?
编辑:没有注意到我在用户控件中,我怎么能得到我的表单?
在此先感谢。
this.FindForm()将获得承载您的自定义控件的表单。一旦你得到了表格,你可以使用.Owner属性。
恕我直言。
表单的所有者属性如何?
非常感谢,但请参阅编辑。 – 2010-10-13 09:28:42
我想出的唯一方法是将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
}
}
FindForm返回NULL。 – 2010-10-13 10:45:18
我认为FindForm只在我们做了.Controls.Add的时候才返回表单,但是在这里我们只是创建了一个表单并打开了它。 – 2010-10-13 10:51:44
如果是这样,请尝试迭代.Parent属性,直到找到父链中的第一个Form对象。 P.S.这很奇怪,FindForm()返回null ... – 2010-10-13 10:52:54