【C++/CLI】ウィンドウの押されたボタンを取得(DialogResultプロパティ)

一般的なウィンドウでは下図のようにOKボタンCancelボタンを配置しボタンが押されるとウィンドウを閉じるようにしますが、このOKボタンCancelボタンのどちらのボタンを押されたのか?を取得する方法を紹介します。

 

 

まず、buttonコントロールOKボタンCancelボタン用の2つを配置します。
次にボタンのDialogResultプロパティの中からボタンに応じてOKCancelなどを選択します。

 

 

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ボタンとして認識されます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください