使用学员在表格之间进行交流
本文关键字:之间 表格 | 更新日期: 2023-09-27 18:25:47
这将是一个简单的问题。我有两张表格。Form2将字符串传递给Form1。Form1然后在MessageBox中显示输入的字符串。
表单2中的我的代码:
public delegate void PassData(object o);
public PassData pd;
public Form2()
{
pd("Hello World");
InitializeComponent();
}
并且在形式1中:
public Form1()
{
InitializeComponent();
var f2 = new Form2();
f2.pd = Arrive;
f2.Show();
}
public void Arrive(object o)
{
MessageBox.Show(o.ToString());
}
问题:类型为System.NullReferenceException的未处理异常,位于pd("Hello World");
我知道它是空的,但为什么这是个问题?我在Form2的构造函数中向它传递了一个值。
我在Form2的构造函数中向它传递了一个值
不,是在初始化Form2
之后传递的。当调用Form2
的构造函数时,您的pd
值仍然是null
,因此是NullReferenceException
。
此行:
var f2 = new Form2();
使其运行:
public Form2()
{
pd("Hello World");
InitializeComponent();
}
您实际想要的是将它作为参数传递给Form2
的构造函数:
public Form1()
{
InitializeComponent();
var f2 = new Form2(Arrive);
f2.Show();
}
public Form2(Passdata passData)
{
pd = passData;
pd("Hello World");
InitializeComponent();
}