从usercontrol访问表单

Kri*_*ian 2 c# user-controls

我有一个用户控件,需要访问Form1.cs上的变量和静态类.我在谷歌上找不到一个有效的例子.有什么提示吗?谢谢!

namespace WinApp1
{
public partial class Form1 : Form
{
    Public MyCustomClass myClass; // need to access this
    public Form1()
    {

    }
}
public static class Global {
   public static myGlobalVar; // Need to Access This
}
}
Run Code Online (Sandbox Code Playgroud)

Abd*_*Haj 6

this.Parent在UserControl中使用以获取父表单:

Form1 myParent = (Form1)this.Parent;
Run Code Online (Sandbox Code Playgroud)

然后你可以访问公共领域/财产:

myParent.myClass 
Run Code Online (Sandbox Code Playgroud)

请注意,如果UserControl放置在Form中的Panel中,则需要获取父级的父级.

您可以通过其名称访问静态类:

Global.myGlobalVar 
Run Code Online (Sandbox Code Playgroud)


Boa*_*ler 5

您可以使用 FindForm()

但是您应该退后一步,看看这是否是最佳解决方案。这是一个很强的依赖性,它降低了控件的可测试性和重用因素。

例如,考虑引入一个带有控件所需成员的接口,并在父 hirachy 中搜索它或将其作为参数注入,...

从那时起,您可以在我的情况下使用控件。可能还有更多的解决方案。只是想让你想想,如果没有什么比依靠表格更好的了..