从一种形式调用方法到另一种形式显示错误“对象引用未设置为对象的实例”

时间:2016-06-16 07:37:56

标签: c#

我有两种形式。当我在文本框中粘贴加密代码后单击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();我收到错误“对象引用未设置为对象的实例”。

2 个答案:

答案 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()