这将是一个简单的问题。我有两种形式。Form2将一个字符串传递给Form1。然后,Form1在MessageBox中显示输入的字符串。
我在form2中的代码:
public delegate void PassData(object o);
public PassData pd;
public Form2()
{
pd("Hello World");
InitializeComponent();
}
并在form1中:
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");
我得到它为null的情况下,但为什么会出问题呢?我在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();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句