私はしばらくの間、親のポインタForm1
を子のユーザーコントロールに渡そうとしていますoP2_settings
。
この時点で、基本設定機能のユーザーコントロールを実装しようとしています。これのいくつかは、親の要素(ステータスストリップ、ウィンドウタイトルなど)との相互作用を必要とします。
私はこれを両方で実装することができました:
Form1
setParent
パラメータを取る別のvoid関数を実行するForm1^
しかし、私はデザイナーを壊さない解決策を見つけることができません。たとえば、クラスへの前方参照を削除するとForm1
、デザイナは機能しますが、コンパイラは当然、未定義の識別子を理由にコンパイルを続行することを許可しません。
プログラムを実行すると、デザイナーは奇妙な行動をします。状況に応じて、「イベントバインディングサービスに渡されたオブジェクトにイベントを設定できません」から「メソッドが見つかりません」またはデザイナーがロードするまでの約4つの異なるエラーがありますが、適切なタブにユーザーコントロールを表示する代わりに、Form1
両方に表示されます(単一の要素としてのユーザーコントロール)。
これを実行時/コンパイル時と設計時の両方で機能させる方法はありますか?要素をコンパイル/移動するたびに、自分の行をコメントインしたりコメントアウトしたりする必要はありません。
これはC ++ Windowsフォームアプリケーションにあり、VS2010を使用しています。
これは、あまりにも密結合の設計です。ユーザーコントロールは、その親なしでは生きられません。親と子の間で参照を渡す代わりに、イベントを使用する必要があります。
ユーザーコントロールで何かが変更され、親が更新する必要がある場合は、そのためのイベントをユーザーコントロールで作成し、それを起動します。次に、親はイベントのハンドラーをインストールし、適切なアクションを実行します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加