将信息从一个窗体发送到另一个窗体

本文关键字:窗体 另一个 一个 信息 | 更新日期: 2023-09-27 18:03:54

我有一个问题:我必须表单。一个表单有dataGridView和一个按钮。当您单击按钮时,创建Form2,在其中输入信息。这些信息需要添加到firstform上的dataGridView。但当我点击按钮"添加"在Form2,我有一个错误NullReferenceException未处理(对象引用未设置为对象的实例)。请帮帮我!

Form1

private string client = null;
    private string driver = null;
    private string carModel = null;
    private string carKey=null;
    public string GoodsName2 = null;
    public string GoodsPrice2 = null;
    public string GoodsCount2 = null;
    AddWaybilGoods add_waibil_goods = null;
    public Waybil()
    {
        InitializeComponent();
        Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
        base_.fill_combo(comboClients, "Clients", "ClientsName");
        base_.fill_combo(comboDrivers, "Drivers", "DriversName");
        base_.fill_combo(comboModel, "Cars", "CarsModel");
    }
    private void Create_Click(object sender, EventArgs e)
    {
        client = comboClients.SelectedItem.ToString();
        driver = comboDrivers.SelectedItem.ToString();
        carModel = comboModel.SelectedItem.ToString();
        carKey =Key.Text.ToString();
        Word.Application word = new Word.Application();
        word.Visible = true;
        Word.Document doc = word.Documents.Add();
        doc.Select();
        word.Selection.TypeText(client);
        word.Selection.TypeText(driver);
        word.Selection.TypeText(carModel);
        word.Selection.TypeText(carKey);
    }
    private void Add_Click(object sender, EventArgs e)
    {
        add_waibil_goods = new AddWaybilGoods();
        add_waibil_goods.Owner = this;
        add_waibil_goods.Show();
        add_waibil_goods.Focus();
        dataGridView1.Rows.Add(GoodsName2,GoodsPrice2, GoodsCount2);
        dataGridView1.Update();
    }
    private void comboModel_SelectedIndexChanged(object sender, EventArgs e)
    {
        carModel = comboModel.SelectedItem.ToString();
        Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
        base_.find_item(Key, "Cars", "CarsKey", "CarsModel", carModel);
    }
}

Form2

public partial class AddWaybilGoods : Form
{
    Waybil w_b = null;
    public string GoodsName1 = null;
    public string GoodsPrice1 = null;
    public string GoodsCount1 = null;
    public AddWaybilGoods()
    {
        InitializeComponent();
        w_b= this.Owner as Waybil;
        Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
        base_.fill_combo(AddWaybilGoods1, "Goods", "GoodsName");
    }
    public void Добавить_Click(object sender, EventArgs e)
    {
        GoodsCount1 = Count.Text.ToString();
        w_b.GoodsName2 = this.GoodsName1;
        w_b.GoodsPrice2 = GoodsPrice1;
        w_b.GoodsCount2 = GoodsCount1;
        this.Close();
    }
    private void AddWaybilGoods1_SelectedIndexChanged(object sender, EventArgs e)
    {
        GoodsName1 = AddWaybilGoods1.SelectedItem.ToString();
        Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
        base_.find_item(Price, "Goods","GoodsPrice", "GoodsName", GoodsName1);
        GoodsPrice1 = Price.Text.ToString();
    }
}

将信息从一个窗体发送到另一个窗体

更新以下语句应该可以解决您的问题

private void Add_Click(object sender, EventArgs e)
{
    add_waibil_goods = new AddWaybilGoods();
    if (add_waibil_goods.ShowDialog(this) == DialogResult.OK)
    {
        dataGridView1.Rows.Add(add_waibil_goods.GoodsName2, add_waibil_goods.GoodsPrice2, add_waibil_goods.GoodsCount2);
        dataGridView1.Update();
    }
}

当添加到dataGridView1时,似乎您正在引用Form1中的属性。您还需要将form2作为模态窗口启动。模态窗口将确保用户在应用程序继续之前填写正确的数据。

http://msdn.microsoft.com/en-us/library/c7ykbedk (v = vs.110) . aspx

要访问Form2中的Form1公共成员,可以在构造函数中将相同的实例发送给Form1。

参见以下代码:

Form1 :

private void Add_Click(object sender, EventArgs e)
{
    add_waibil_goods = new AddWaybilGoods(this); //parameterized constructor       
    add_waibil_goods.Show(this); //assign owner
    add_waibil_goods.Focus();
    dataGridView1.Rows.Add(GoodsName2,GoodsPrice2, GoodsCount2);
    dataGridView1.Update();
}

Form2 :

public partial class AddWaybilGoods : Form
{
    Waybil w_b = null;
    public string GoodsName1 = null;
    public string GoodsPrice1 = null;
    public string GoodsCount1 = null;
    public AddWaybilGoods(Waybil wb)
    {
        InitializeComponent();
        w_b= wb;
        Base base_ = new Base(Share.server_address, Share.login, Share.password, Share.database);
        base_.fill_combo(AddWaybilGoods1, "Goods", "GoodsName");
    }
    //... other methods
}