从全局类调用变量

时间:2014-01-17 09:30:05

标签: c#

我有一个全局变量类,如下所示:

internal static class GlobalVariables
{
    public static PortBrowserForm open;
}

PortBrowserForm类是一个Windows Form类,它有一个计时器,想要使用它的属性,如下所示(另一种形式):

// In that other form...
GlobalVariables.open.timer1.Enabled = true;

但我不能称之为。我只能从GlobalVariables.open变量调用一个函数(已经是一个表格)。请帮忙。

2 个答案:

答案 0 :(得分:0)

快速和肮脏

在那里检查PortBrowserForm .designer.cs/vb文件,您可以找到表单所有控件的声明。从那里将访问级别更改为public,您只需创建表单实例即可从任何表单访问该访问级别。

更新

要在另一个中访问一个表单控件,您需要在另一个表单的构造函数中传递第一个表单。假设我们有两种形式

Form1.cs

Form2.cs

In some event of form1 , call form2.

frm1Btn_Click()
{
   form2 f2 = new form2(this);
   f2.Show();
}

在form2中创建一个重载的构造函数,Form1作为参数并拾取form1及其所有控件。

答案 1 :(得分:0)

GlobalVariables.open.timer1.Enabled = true;

要使上述代码生效,您需要制作timer1的修饰符public或至少internal。但是......不要这样做,永远不要公开字段public,因为你无法控制正在做的

而是创建一个为您完成工作的方法。

class PortBrowserForm : Form
{
    public void SetTimerEnabled(bool enabled)
    {
        timer1.Enabled = enabled;
    }
}

然后使用

GlobalVariables.open.SetTimerEnabled(true);