从不同的形式访问功能

时间:2018-02-14 15:31:31

标签: c#

在我的课程中,我有两种形式。主要表格和填写额外信息的表格。我要做的是当按下“确定”按钮时,在列表框中写出第二个表单上给出的信息。

目前这就是我所拥有的: 主要形式:

public void writeLine()
{
    foreach (var item in VarClass.listItems[VarClass.count - 1])
    {
        listBox1.Items.Add(item.ToString());
    }
}

第二种形式:

Form1.writeLine();

因为它,我在'Form1.writeLine();'得到以下错误 “非静态字段,方法或属性需要对象引用......”

我可以通过在主窗体中使用'writeLine()'静态来解决这个问题,但是后来我在主窗体中的'listBox1'上得到了同样的错误。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

您应该将主表单的引用传递给第二个表单,并在该引用上调用该方法。例如,您可以在第二个表单上创建属性,如private Form _mainForm;,并创建第二个表单的构造函数以接收该引用并设置为该字段。之后,您将能够以第二种形式致电_mainForm.writeLine()

答案 1 :(得分:0)

创建Form1的实例并调用该方法。这是代码:

new Form1().writeLine();

答案 2 :(得分:0)

有几种方法可以解决这个问题。一种方法是使form2理想地通过接口而不是对具体类的引用返回到调用表单。

另一个选择是Form2有一个form1可以订阅的事件,它会告诉form1 form2有一些输出。

答案 3 :(得分:0)

保留对第一个表格的引用:

public MyFirstForm
{
    ...

    public MyFunction()
    {
        MySecondForm secondForm = new MySecondForm();

        // ... Open your form etc, look for when it's complete and then ...

        // Read the values from the second form into the first
        var MyValues = secondForm.getValues();

        // Now populate the list-box with the information returned.
        //for (my listbox)
    }
}