在我的课程中,我有两种形式。主要表格和填写额外信息的表格。我要做的是当按下“确定”按钮时,在列表框中写出第二个表单上给出的信息。
目前这就是我所拥有的: 主要形式:
public void writeLine()
{
foreach (var item in VarClass.listItems[VarClass.count - 1])
{
listBox1.Items.Add(item.ToString());
}
}
第二种形式:
Form1.writeLine();
因为它,我在'Form1.writeLine();'得到以下错误 “非静态字段,方法或属性需要对象引用......”
我可以通过在主窗体中使用'writeLine()'静态来解决这个问题,但是后来我在主窗体中的'listBox1'上得到了同样的错误。我该如何解决这个问题?
答案 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)
}
}