我有两种形式。当我在文本框中粘贴加密代码后单击Fomr1中的按钮时,它会加载带有询问密码的Form2,当我单击“确定”时,它应该关闭Form2,它应该从From1 调用方法而不刷新Form1 (因为我在Form1中进行解密,如果我使用新的Form1();它重新加载Form1并且解密不起作用)。 以下是我的代码:
public partial class Form2 : Form
{
private Form1 form1;
Form2 form2;
public Form2()
{
InitializeComponent();
}
public bool CheckPwd()
{
if (textBox1.Text == "Hi")
return true;
else
return false;
}
private void ok_Click(object sender, EventArgs e)
{
form2 = new Form2();
//form1 = c
if (!CheckPwd())
{
MessageBox.Show("Password is Incorrect", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
form2.ShowDialog();
form1.Hide();
return;
}
else
{
MessageBox.Show("Password ok", "Successful", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
form1.Decrypting();
}
}
在form1.Decrypting();我收到错误“对象引用未设置为对象的实例”。
答案 0 :(得分:0)
首先看一下:What is a NullReferenceException, and how do I fix it?
您的form1
对象代码中的第二个对象Form2
为空您永远不会设置form1
对象,这样您就会在Form2_FormClosed
方法上获得Null错误
您必须在form1
ctor
form2
对象
public Form2(Form1 form1)
{
this.form1 = form1;
InitializeComponent();
}
还有其他方法可以做到这一点。但问题可能是form1
代码中未设置form2
答案 1 :(得分:0)
这最终有效.. 在Form2中: 私人Form1 form1;
public Form2(Form1 form1) : 这个() {
this.form1 = form1;
}
在Form1中:
form = new Form2(this);
我想在From1到Form2中使用的方法必须用作内部void methodname()