メインフォームにユーザー コントロールを追加する関数を作成しようとしています。この関数をユーザーコントロール自体からも利用できるようにしたいので、静的にしています。
私の問題は、使用できない静的な場合this.Controls.Add(ucontrol);
、変更しようとしましたActiveForm.Controls.Add(ucontrol);
が、ActiveForm が NULL であり、Controls プロパティがない (例外をスローする) ことです。
更新#1:ユーザーコントロール内で次のようなことをしました:
MainForm ref_to_mainform_to_gain_access_to_functions = (MainForm)Parent;
ref_to_mainform_to_gain_access_to_functions.DisplayControl(ucontrol);
たぶんそれはさらに良いですが、静的メソッドからメインフォームにアクセスすることは可能だと思いますか?
更新#2:
Application.OpenForms["FormName"]
静的メソッドから作業しました。
そのユーザーコントロール全体の目的が、他のユーザーコントロールをオンクリックで表示するボタンを備えたメニューとして機能するかどうかをまだ調べようとしていますが、ユーザーコントロールからメインフォームの関数(ユーザーコントロールを表示する関数)を呼び出すことは依然として「デザイン犯罪」ですか? ? (「更新#1」で行ったように)