使用学员在表格之间进行交流

本文关键字:之间 表格 | 更新日期: 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();
}