winform两页面传值时出现 未将对象引用设置到对象的实例

Form1
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace adventure
{
public partial class Form1 : Form
{
string str1;
string str2;
public Form1()
{
InitializeComponent();
}

    private void button1_Click(object sender, EventArgs e)
    {
        //string str1 = Process.GetCurrentProcess().MainModule.FileName;
        OpenFileDialog open = new OpenFileDialog();
        if (open.ShowDialog() == DialogResult.OK)
        {
            textBox1.Text =open.FileName;
        }
    }

    private void button2_Click(object sender, EventArgs e)
    {
        str1 = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;//得到路径
        textBox1.Text = str1;//显示得到的路径

    }

    private void button3_Click(object sender, EventArgs e)
    {
        str2 = textBox2.Text;
        Form2 f = new Form2(str1,str2); //将值传到Form2
        f.Show();
        //Form2 Form1 = new Form2();
        //在新弹出的窗口中显示得到的路径和内存
        //MessageBox.Show("您选择的文件路径是:\n" + textBox1.Text + "\n内存是:" + textBox2.Text);
        //Form1.Show();
    }
}

}

Form2
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace adventure
{
public partial class Form2 : Form
{
string b;
string d;
public Form2(string a,string c)//a等同于Form1textbox值
{
this.b = a; //将Form1的textbox值传给b
this.d = c;
label1.Text = a;
label2.Text = c;
}

    public Form2()
    {
        // TODO: Complete member initialization
    }





}

}
图片说明

http://bbs.csdn.net/topics/360140208