C++/CLI

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

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

 

ウィンドウの押されたボタンを取得

 

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

 

DialogResultプロパティ

 

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

コメント

タイトルとURLをコピーしました