フォームの遷移について教えてください – プログラミング – Home

フォームの遷移について教えてください
 
通知
すべてクリア

[解決済] フォームの遷移について教えてください


test
 test
(@test)
ゲスト
結合: 18年前
投稿: 28
Topic starter  

VC++/CLI Windowsフォームアプリケーションにて開発しています。

Form1、Form2、Form3があってForm1が親フォームです。

Form1からForm2を呼ぶときにForm1のモジュール内で

clsForm2 = gcnew Form2();

clsForm2->Show();

this->clsForm2->Owner = this;

としています。Form2からForm1へアクセスする時は

static_cast<test::Form1^>(this->Owner)->*****

としています。

今回、やりたいことはForm3からForm1へアクセスしたいのです。Form3はForm2から呼ば
れるためForm1とは無縁の関係になっています。このような場合はどのようにしたら良い
でしょうか?親子関係をいろいろ調べているのですが行き詰ってしまったためお力を貸
してください。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>clsForm2->Show();
>this->clsForm2->Owner = this;
これは1行出かけますね。

this->clsForm2->Show(this);

> やりたいことはForm3からForm1へアクセス

Fomr3で同様に

Form2^ f2 = static_cast<test::Form2^>(this->Owner);

として親のForm2のインスタンスを取得してさらに

Form1^ f1 = static_cast<test::Form1^>(f2->Owner);

としてForm1のインスタンスを取得すればいいのでは?

もっとも、私だったらOwnerプロパティのキャストの連続のようつくりにはしませんけ
ど。
(Form2にForm1の操作するデリゲートを設定する。
Form2からは設定されたデリゲートを使ってForm1を操作する。
Form3も同様)


返信引用
test
 test
(@test)
ゲスト
結合: 18年前
投稿: 28
Topic starter  

Blueさん

いつもありがとうございます。

Form2からForm3を呼び出すときにForm1を経由して呼び出しているのですがこれも考え方
としては間違いでしょうか?

From2.cpp内で

static_cast<test::Form1^>(this->Owner)->clsForm3 = gcnew Form3();
static_cast<test::Form1^>(this->Owner)->clsForm3->Show();

としています。

Form1のグローバル変数で

Form2^ clsForm2;
Form3^ clsForm3;

と宣言しています。

上記のような場合にBlueさんが提案してくださった

>>Fomr3で同様に
>>Form2^ f2 = static_cast<test::Form2^>(this->Owner);
>>として親のForm2のインスタンスを取得してさらに
>>Form1^ f1 = static_cast<test::Form1^>(f2->Owner);
>>としてForm1のインスタンスを取得すればいいのでは?

は使用出来ますでしょうか?


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>Form1のグローバル変数で
メンバ変数ですね。

>static_cast<test::Form1^>(this->Owner)->clsForm3->Show();
static_cast<test::Form1^>(this->Owner)->clsForm3->Show(this);

とすれば出来ます。


返信引用
test
 test
(@test)
ゲスト
結合: 18年前
投稿: 28
Topic starter  

Blueさん

いつも迅速なアドバイスありがとうございます。

>>static_cast<test::Form1^>(this->Owner)->clsForm3->Show(this);

上記のコード追加でForm3からForm1へアクセスすることが出来るようになりました。
いつもながら的確なアドバイスありがとうございます。

>>もっとも、私だったらOwnerプロパティのキャストの連続のようつくりにはしませんけ
>>ど。
>>(Form2にForm1の操作するデリゲートを設定する。
>>Form2からは設定されたデリゲートを使ってForm1を操作する。
>>Form3も同様)

デリゲートの方法も興味があるので調べて勉強してみたいと思います。

CLIでのフォーム間の操作は上記のようにオーナーを設定してやって操作するのが普通な
のですかね~。VCのようにポストメッセージが使用出来るのかも謎なところです。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました