メイン フォーム (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」は、表示対象として選択したレコードのIDを表すintです。「editAdd」は、ユーザーが選択した情報を編集するか、新しい情報を追加するかを AddProd に伝える bool 値です。
私が抱えている問題は、ユーザーが編集、追加、またはキャンセルした後に AddProd を閉じると、this.Close() を使用するとフォームが破棄されることです。プログラム全体を再起動しない限り、 AddProd を再度開くことはできません。そして、もう一度開いてみると、「破棄されたオブジェクトにアクセスできません。オブジェクト名: 'AddProd'」というエラー メッセージが表示されます。また、this.Close() の代わりに this.Hide() を使用しようとしました。破棄されたエラーが発生するのを防ぎます。しかし、新しいレコードを選択して AddProd を再度開くと、以前に選択したレコードのデータがテキスト ボックスに残っています。
私の問題を完全に理解するのに役立ちます。Form1 は、ユーザーに表示される製品の dataGridView を表示します。次に、ユーザーは編集するデータ行を選択するか、新しいデータ行を追加できます。ユーザーが行を選択したら、Edd/View(button69) ボタンを押します。AddProd が開き、テキスト ボックスに選択した行データが入力されます。ユーザーがデータを編集または表示して AddProd を閉じたら、別の行を選択して [編集/表示] ボタンをもう一度押します。今回のみ、表示されるデータは、現在選択されている行ではなく、以前に選択された行のデータです。もちろん、this.Close() を使用しない限り。その場合、AddProd は再度開かず、単にエラーになります。
少し重複していたらすみません。質問に問題がないことを確認したいだけです。何か助けはありますか?