親フォームの他のフォームから新しいタブページを追加したいとします。Winforms子フォームから親フォームへのtabPageの追加
私の親フォームはMainWindow
であり、このフォームはTabControl
です。 子フォームがあるChildForm
子フォームボタンをクリックすると、TabControl
に新しいタブページを追加したいのですが、MainWindow
からです。
私はこれがSystem.NullReferenceException
をスローしますChildForm
private MainWindow mainWindow;
public List(MainWindow form)
{
this.mainWindow = form;
}
private void createButton_Click(object sender, EventArgs e)
{
TabPage tabPage = new TabPage("ASD");
mainWindow.MainTabControl.TabPages.Add(tabPage);
}
にコンストラクタの依存関係を作成しよう!
MainWindow
アクセッサーの魔女はへのアクセスをMainWindow
で返しますが、作成してみることもできません。
public static TabControl MainTabControl
{
get {
MainWindow self = new MainWindow();
return self.mainTabControl;
}
}
私は新しい参照を作成し、それが問題であるため、これは機能しません。
私は2つの例を試してみると、うまくいきません。
この問題を解決する方法は他の誰かが知っていますか?
あなたの最初の例を
コードをこのイベントにサブスクライブし、そうするように要求されたときに、新しいタブページの作成を開始しますベストプラクティスはうまくいくはずです。デバッガを使用して、その式の中で何がnullであるか調べることはできますか? _mainWindow.MainTabControl.TabPages.Add(tabPage); _ – Steve
'null'は' MainWindow'クラスのインスタンスを作成しないためです。 – Ivan
ControlsのデフォルトのModifiers値は** Private **です。つまり、他のFormからTabControlにアクセスすることはできません。例外は、プロパティを介してパブリックにする試みの1つのためにほぼ確実です。あなたは単にTabControlのModifiers値をPublicまたはInternalに変更し、それから実際の名前を使用することができます: 'mainWindow.tabControl1.TabPages.Add(tabPage);' –