いつもお世話になっております。
現在フォームAからフォームBをモードレスで呼び出しております。
フォームBが閉じたことをフォームAに知らせたいのですが、
どのようにすればよいか教えて頂けませんでしょうか。
現在下記のタイミングでコーディングすればよいと思うのですが、
いかがでしょうか。
private: System::Void FormB_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e) {
//ここにコード記述
}
お手数ですが、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
FormBのFormClosingイベントに
FormAで定義したFormClosingEventHandlerデリゲードを設定する。
// ずっと前のコードに追加
private:
Form2^ childForm_;
private:
System::Void ChildForm_Closing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e)
{
MessageBox::Show(L"フォームが閉じるよ");
}
private:
System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
if ((this->childForm_ != nullptr) &&
!this->childForm_->IsDisposed)
{
this->childForm_->Close();
/this->childForm_ = nullptr;
}
else
{
this->childForm_ = gcnew Form2();
this->childForm_->FormClosing += gcnew FormClosingEventHandler(this, &Form1::ChildForm_Closing);
this->childForm_->Show();
}
}
ただ
>フォームを閉じたこと
だったら、FormClosingではなくFormClosedではないかと。
この回答への補足
回答ありがとうございます。
(返信遅れてすみません。)
※本件はhttp://okwave.jp/qa4865001.htmlで質問させていただいた延長でした。
>FormBのFormClosingイベントに
>FormAで定義したFormClosingEventHandlerデリゲードを設定する。
とはどういうことなのでしょうか。
また、教えていただいたソースは、以下の部分も含めてすべて呼び出し元のフォームに書き込むのでしょうか。
System::Void ChildForm_Closing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e)
{
MessageBox::Show(L"フォームが閉じるよ");
}
お手数ですが、よろしくお願いします。
No.3
- 回答日時:
>とはどういうことなのでしょうか。
は示したコードのとおり。
>以下の部分も含めてすべて呼び出し元のフォームに書き込むのでしょうか。
そう。
本気でC++/CLIをやるのであれば、ちゃんとした基本を勉強しておくべきでしょう。
オススメ書籍
http://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5C-CLI- …
ご回答ありがとうございます。
教えていただいたとおりしたら、何とかできました!
ありがとうございます。
しかしながら、デリゲートをまったく理解していないので、
教えていただいた本を利用して、もう一度勉強させて頂きます。
No.1
- 回答日時:
こんばんは。
こう言う事でしょうか。//フォームA
public: System::Void FormA::NotifyClosing(System::Windows::Forms::Form^ form)
{
//必要であればformを使用して何かする
}
//フォームB
private: System::Void FormB_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e)
{
//ここにコード記述
FormA^ formA = dynamic_cast<FormA^>(this->Owner);
if(formA == nullptr)return;
formA->NotifyClosing(this);
}
この回答への補足
早速のご回答ありがとうございます。
やりたいことは、教えていただいたソースのイメージです。
しかしながら、教えていただいたソースではエラーが
出てしまいました。
(FormAが定義されていませんと出てきます。)
また、
formA->NotifyClosing(this);
のように、formAはNotifyClosingを利用できませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- その他(プログラミング・Web制作) google formsで回答者をスプレッドシートに記載する方法 1 2023/06/23 11:22
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
リストボックスの選択解除
-
ディスプレイ解像度より大きな...
-
サブフォームの新規レコードに...
-
アクセスVBA フォームのス...
-
メッセージボックスの背景色
-
VBAでフォームのスクロールバー...
-
Googleフォーム・複数人の申し...
-
フォームで複数のチェックボッ...
-
Accessでフォームから別フォー...
-
フォームの外にドラッグ&ドロップ
-
VB.NET メッセージボックスが隠...
-
VBのEXEファイルのサイズを小さ...
-
C# 別なフォームへ値を渡す (...
-
[C#]別フォームとの連動について
-
アクセス フォームが存在する...
-
ASP.NETとC#でWebフォームを呼...
-
PDFフォームに本日の日付を自動...
-
AccessVBAでサブフォームの値チ...
-
ExcelVBAでフォーム内でブック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
リストボックスの選択解除
-
Googleフォーム・複数人の申し...
-
サブフォームの新規レコードに...
-
PDFフォームに本日の日付を自動...
-
Accessでフォームから別フォー...
-
アクセスVBA フォームのス...
-
accessで2つ以上のフォームを起...
-
メッセージボックスの背景色
-
メインフォームからサブフォー...
-
VBプログラムの終了
-
VBA リストボックスをダブルク...
-
ディスプレイ解像度より大きな...
-
アクセス フォームが存在する...
-
サブフォームのイベント取得
-
ユーザーフォーム上にアイコン...
-
Access 無操作の場合、自動で閉...
-
C# マルチディスプレイにて、...
-
サブフォームの行ごとにコンボ...
-
フォーム上の全てのコントロー...
おすすめ情報