从静态类访问表单控件

时间:2014-06-24 22:15:38

标签: c# .net winforms static-members

我有一个包含大量控件的Form1,我需要从另一个静态类访问/编辑控件值。由于我在表单上有很多控件,因此需要一些时间来定义set并从中获取每个控件。我想知道是否有任何方法可以在静态类中定义Form1的实例,以便我可以访问此类中Form1的所有控件?

这是静态类的结构:

public static class Glob
{
    public static int int1;

    public static int Func1()
    {
        return 10;
    }
}

我正在使用静态方法和变量的静态类,因为我需要能够从任何其他形式和类轻松访问其变量和方法。这样我每次需要调用它时都不需要定义类的实例。另外,借助静态类,我可以在类和表单之间共享变量。

2 个答案:

答案 0 :(得分:1)

您可以以静态形式声明:

private static MyformType myform;

public static void setmyform(MyformType myform1)
{
  myform=myform1;
}

虽然,这个概念通常不太好,也许更好的方法是将你的表单作为参数传递给静态类中调用的函数,并使你的控件应该被公开,通过在属性框中的chanign acces修饰符表格

public static void EgClearText(Textbox tb)
{
  tb.Text="";
}
public static void DoSomethingElseWithTheForm(MyformType myform)
{
  myform.someOtherContol.Visible=false;
}

答案 1 :(得分:0)

您可以将单件模式应用于表单。请注意, Instance 将返回对最后创建的MyForm实例的引用,因此您不应该有多个MyForm实例。

支持字段:

    private static MyForm _instance

Singleton访问者:

    public static MyForm Instance
    {
        get
        {
            return _instance;
        }
    }

使用该类后,您可以将其引用分配给支持字段

    public MyForm()
    {
        _instance = this;
    }

作为旁注;如果您有多种技术可供选择,请查看WPF。它有bindings以编程方式获取和设置UI控件的值