- ベストアンサー
子フォームから親フォーム上のコントロールを操作したい
VC++.NET(C++/CLI)にてアプリケーションを開発しております。 親フォーム(FormParent)と子フォーム(FormChild)があり 子フォームから親フォーム上にあるtextBox1を操作したいのですがうまくいきません。 親フォームからはFormChild.hをインクルードすることで 親フォームのインスタンスを得て、子フォームを表示させているのですが これに加えて子フォームからFormParent.hをインクルードすると循環参照(と言うのですか?) となる為にエラーになってしまいます。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
VC++は使ってませんのでC/C++一般の問題としての回答です。 子フォームのヘッダファイル内で親ファイルのヘッダをインクルードしてませんか? それなら、子フォームのソースファイル(*.cpp)内でインクルードするようにすればよいはずです。 ただ、子フォームから親フォームが見えるようにする(親フォームのヘッダをまるまるインクルードする)のはあまり綺麗な設計とは思えません。 子フォームにtextBoxを操作する関数を作り、引数としてtextBoxのポインタなり参照なりを渡すようにすれば、子フォームが親フォームのヘッダをインクルードする必要はなくなりますが。 ※子フォームは当然textBoxの型は知っているという前提。
その他の回答 (1)
どうも(・∀・) ☆子フォームに、親フォームの関数(textBox1を操作する関数) を呼び出させて、操作する はどうでしょうか? クラスなどで管理しているので、 直接操作する関数をpraiavte関数として それを呼び出す関数をpublic関数とすれば、 外部からも操作は可能となります。 フレンド関数でもいいですけど、 あとは、自分がどのようにプログラムを管理したいかによって仕様は変わってきますね♪
お礼
ご回答ありがとうございます。 なるほど。。。 しかし、親フォームの関数を子フォームから呼び出すには 子フォームは親フォームのヘッダファイル(Form1.h)を インクルードしなければならないと思うのですがどうなんでしょうか?
補足
お返事ありがとうございます。 textBoxのポインタを引数に渡すことで目的としていたことが できるようになりました。ありがとうございました。