如何重新打开封闭的表格而不处理错误或保留以前的数据?

时间:2012-08-14 20:22:06

标签: c# forms show dispose

我有一个主窗体(Form1)和一个辅助窗体(AddProd)。在Form1上,我有一个打开AddProd的按钮。这是事件代码。

private void button69_Click(object sender, EventArgs e)
    {
        pIdVal = Convert.ToInt32(dataGridView2.SelectedRows[0].Cells[0].Value);
        editAdd = true;
        addProd.Show();
    }

“pIdVal”是一个int,表示要显示的所选记录的ID。 “editAdd”是一个bool值,如果用户希望编辑所选信息或添加新信息,它将告诉AddProd。

我遇到的问题是,当用户在编辑,添加或取消后关闭AddProd时,如果我使用了这个表单,则表格会被处理掉.Close()。除非我重新启动整个程序,否则不允许再次打开AddProd。如果我尝试重新打开它,我收到并显示错误消息“无法访问已处置的对象。 对象名:'AddProd'。“我也尝试使用this.Hide()代替this.Close()。它使我不会收到错误。但如果我选择一个新记录然后再次打开AddProd ,来自先前所选记录的数据仍在文本框中。

帮助更好地理解我的问题。 Form1显示产品的dataGridView供用户查看。然后,用户可以选择要编辑的一行数据,或者用户可以添加新的数据行。一旦用户选择了一行,他们就会按下Edd / View(按钮69)按钮。这将打开AddProd,其中的文本框将填入所选行数据。一旦用户编辑或查看数据并关闭AddProd,他们就会选择另一行并再次按下Edd / View按钮。仅在这次,显示的数据是先前选择的行而不是当前选择的行。当然,除非我使用this.Close()。在这种情况下,AddProd不会重新打开,只是错误。

很抱歉,如果我有点重复。我只是想确保这个问题没有问题。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

只需创建一个AddProd的新实例:

private void button69_Click(object sender, EventArgs e)
{
    pIdVal = Convert.ToInt32(dataGridView2.SelectedRows[0].Cells[0].Value);
    editAdd = true;
    AddProd addProd = new AddProd();
    addProd.Show();
}
相关问题