C# 从不同的窗体访问函数
在我的程序中,我有两种形式。主表格和您填写额外信息的表格。我想做的是,当按下“ok”按钮时,在列表框中写出第二个表单上给出的信息 目前我拥有的是: 主要形式:C# 从不同的窗体访问函数,c#,C#,在我的程序中,我有两种形式。主表格和您填写额外信息的表格。我想做的是,当按下“ok”按钮时,在列表框中写出第二个表单上给出的信息 目前我拥有的是: 主要形式: public void writeLine() { foreach (var item in VarClass.listItems[VarClass.count - 1]) { listBox1.Items.Add(item.ToString()); } } 第二种形式: Form1.writeL
public void writeLine()
{
foreach (var item in VarClass.listItems[VarClass.count - 1])
{
listBox1.Items.Add(item.ToString());
}
}
第二种形式:
Form1.writeLine();
因此,我在“Form1.writeLine();”处得到以下错误
非静态字段、方法或属性需要对象引用
我可以通过在主窗体中设置'writeLine()'静态来解决这个问题,但是在主窗体中的'listBox1'上也会出现同样的错误。如何修复此问题?创建
Form1
的实例并调用该方法。代码如下:
new Form1().writeLine();
您应该将主窗体的引用传递给第二个窗体,并调用该引用上的方法。例如,您可以在第二个窗体上创建属性,如
private form\u mainForm
并创建第二种形式的构造函数以接收该引用并设置为该字段。之后,您可以在第二个表单中调用\u mainForm.writeLine()
。有几种方法可以处理此问题。一种是form2最好通过接口而不是具体类的引用返回调用表单的引用
另一个选项是Form2有一个form1可以订阅的事件,该事件将通知form1 Form2有一些输出。保留对第一个表单的第二个表单的引用:
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)
}
}
您的第二个表单需要引用第一个表单。这是一个触及面向对象编程核心的问题。您需要对实例化(即:创建)的实际表单对象的引用。Form1是类,而不是这里的对象。