この質問は重複しているように見えるかもしれませんが、プログラムをテストしているときにこの問題に遭遇したばかりで、どのように解決するかについて少し混乱しています。
WinFormがあり、フォームを閉じるイベントがあります。イベントでは、ユーザーに「ウィンドウを閉じてもよろしいですか?」と尋ねるメッセージボックスを開きます。はいボタンを押すと、アプリケーションはウィンドウを閉じて、期待どおりに破棄されないようにします。だから、また開けます。ただし、ボタンを押さなかった場合でもウィンドウは閉じますが、ウィンドウは破棄されます。そのため、もう一度開こうとすると、「破棄されたオブジェクトにアクセスできません」という例外が発生しました。[ボタンを押さない]ボタンが押された場合、WinFormを開いたままにして、破棄しないようにします。
これが私のコードです:
method PPMain.PPMain_FormClosing(sender: System.Object; e: System.Windows.Forms.FormClosingEventArgs);
begin
if MessageBox.Show('Are you sure you want to close the window?','PPMain',MessageBoxButtons.YesNo) = DialogResult.Yes then
begin
e.Cancel := true;
Hide;
end
else
e.Cancel := false;
end;
ウィンドウを閉じて非表示にするようにe.Cancel=trueを設定する必要があるため、逆の操作(e.Cancel = falseで非表示なし)を実行すると、WinFormが閉じて破棄されなくなります。
これをどのように解決しますか?
少し早いですがお礼を、