使用c#以其他形式调用sub

时间:2017-02-11 08:57:06

标签: c# .net

我有一个简短的问题。

我怎么称呼这个子

private void test()
{
   panel1.visible = false;
   panel2.visible = false;
}

换成其他形式?

我试过这个

private static void

问题是我无法在我的sub中添加/包含面板控件。我已将控件的修饰符更改为public

我该怎么办才能以其他形式执行那种代码。

3 个答案:

答案 0 :(得分:1)

我假设您的包含测试方法的表单已打开。您可以执行此操作(作为第一个选项):

//Replace Form1 as the name of your form
Form1 frm = (Form1)Application.OpenForms[0]; //If there are only two forms, 0 index will work fine
frm.test();

这将执行您的测试方法并隐藏面板。

确保您的测试公开:

public void test()
{...}

这是另一种选择: 在您拥有测试方法的第一个表单中,将表单作为参数传递给构造函数:

Form2 frm = new Form2(this);
frm.Show();

在您需要访问测试方法的第二个表单中:

  public Form2()
    {
        InitializeComponent();
    }

    private Form1 form1;
    public Form2(Form1 form1)
        : this()
    {
        // TODO: If you have other member initialization
        this.form1 = form1;
    }

现在您可以访问测试方法并隐藏面板:

form1.test();

答案 1 :(得分:0)

将其更改为

public void test() {
...
}

然后你就可以像

一样调用它
form2.test();

答案 2 :(得分:0)

您可以将面板设为静态,也可以从form.test();

等其他表单中调用它