一般的なウィンドウでは下図のようにOKボタンとCancelボタンを配置しボタンが押されるとウィンドウを閉じるようにしますが、このOKボタンとCancelボタンのどちらのボタンを押されたのか?を取得する方法を紹介します。
まず、buttonコントロールをOKボタンとCancelボタン用の2つを配置します。
次にボタンのDialogResultプロパティの中からボタンに応じてOKやCancelなどを選択します。
DialogResultプロパティを設定することで、ボタンが押されると自動的にウィンドウが閉じられるので、ボタンのイベント処理を記載する必要はありません。 (ShowDialogメソッドを使ってフォームを表示した場合)
ただし、ウィンドウが非表示になるだけなので、ウィンドウが必要なくなったら、フォームを解放しておきます。
以下、Form2が閉じられた時に、何のボタンを押されてウィンドウが閉じられたのか?
を取得する部分のサンプルプログラムです。
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
//Form2を開く
Form2^ frm = gcnew Form2();
frm->ShowDialog();
//押されたボタン別の処理
if (frm->DialogResult == System::Windows::Forms::DialogResult::OK)
MessageBox::Show("Okボタンが押されました");
else if (frm->DialogResult == System::Windows::Forms::DialogResult::Cancel)
MessageBox::Show("Cancelボタンが押されました");
//フォームの解放
delete frm;
}
実行例
Form2を開くボタンをクリック
OKボタンをクリックすると、Form2のウィンドウが閉じられ、
と表示されます。
ウィンドウの×ボタンでウィンドウが閉じられた場合はCancelボタンとして認識されます。
コメント