我有一個主窗體(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」是一個布爾值,如果用戶希望編輯所選信息或添加新信息,它將告訴AddProd。
我遇到的問題是,當用戶在編輯,添加或取消之後關閉AddProd時,如果使用this.Close(),表單將變爲處置狀態。除非我重新啓動整個程序,否則不允許AddProd再次打開。如果我嘗試重新打開它,我收到並顯示「無法訪問處置的對象」錯誤消息。 對象名稱:'AddProd'。「我也試着用this.Hide()代替this.Close()。它使我避免了處置錯誤。但是,如果我選擇一條新記錄,然後再次打開AddProd,則先前選擇的記錄中的數據仍在文本框中。
爲了更好地理解我的問題。 Form1顯示產品的dataGridView供用戶查看。用戶可以選擇一行數據進行編輯,或者用戶可以添加一行新的數據。一旦用戶選擇了一行,他們然後按Edd/View(button69)按鈕。這將打開添加選定行數據的文本框的AddProd。一旦用戶編輯或查看數據並關閉AddProd,他們選擇了不同的行並再次按Edd/View按鈕。只有這一次,顯示的數據是先前選擇的行的數據,而不是當前選擇的行。當然,除非我使用this.Close()。在這種情況下AddProd不會重新打開,它只是錯誤。
對不起,如果我有點重複。我只是想確保這個問題沒有問題。任何幫助?
'button69',嚴重?你有沒有給你的控制名稱? – 2012-08-14 20:25:05
說實話,不是真的。我知道我不應該那樣做,但我已經習慣了。我使用評論和展示位置來識別我的代碼。我不喜歡麻煩命名每一個按鈕和文本框。我的程序中有超過280個文本框,並有100多個按鈕。這只是主要的形式。 – woods 2012-08-14 20:32:44
呃,那就更有理由給他們起個名字......只有數字,知道控制是什麼的唯一方法就是打開設計師,這是一種痛苦。通過查看代碼無法猜測。 – 2012-08-14 20:34:29