2016-06-30 7 views
0

私のアプリケーション(名前空間)には、パネル(パネル)を含むマスターフォーム(フォーム)があります。パネルとクラス間で情報を渡す

マスターフォームが読み込まれると、サブフォームがそのパネルに呼び出されます。そのサブフォームはスプラッシュページとして機能します。それには「起動」ボタンがあります。ボタンをクリックすると、サブフォームが非表示になり、新しいフォームがパネルに読み込まれます。

private void buttonLaunch_Click(object sender, EventArgs e) 
    { 
     this.Hide(); 
     Hub NewHub = new Hub(); 
     NewHub.TopLevel = false; 
     NewHub.AutoScroll = true; 
     Master.panelMaster.Controls.Clear(); 
     Master.panelMaster.Controls.Add(NewHub); 
     NewHub.FormBorderStyle = FormBorderStyle.None; 
     NewHub.Show(); 
    } 

私はエラーを取得しています:

Error 1 An object reference is required for the non-static field, method, or property 'Manager_0._2.Master.panelMaster'

私は問題を解決するために、エラーを解釈するかどうかはわかりません。

+1

私はまだ大文字小文字を混乱させているために、まだ質問を読み終えていません。推奨読書:https://msdn.microsoft.com/en-us/library/ms229002(v=vs.110).aspx – adv12

答えて

2

さて、あなたはpanelという名前のメンバーが含まれているnamespace.classと呼ばれるクラスを持っていると仮定すると、コンパイラは、クラスのインスタンスではなくクラス自体を経由してpanelにアクセスしようとしているように見えることを語っている(つまり、オブジェクト) 。 classのインスタンスを作成するには、このような何か:

namespace.class c = new namespace.class(); 

その後、あなたは、そのオブジェクトにpanelという名前のプロパティまたはフィールドにアクセスすることができます。

c.panel.Controls.Clear(); 

注:お使いの命名の選択肢は非常に悪いです。名前空間namespaceまたはクラスclassを呼び出すだけで問題が発生する可能性があります。ここではいくつかの推奨される命名規則は次のとおりです。

Naming Guidelines

更新:近いあなたの質問を読んでから、あなたがFormPanelを追加しようとしていることが表示されます。このコンパイルの問題を克服すると、ランタイムエラーが発生することになります。なぜなら、これはWindowsフォームの動作ではないからです。 PanelにはFormを入れることはできません。 FormsはトップレベルのUI要素です。私は正直なところ、ここで目標を理解していないので、代わりに何をすべきかを示唆しています。

+0

投稿をより明確にしようとしたように、名前を付けました。私は使用された名前に反映するために投稿を編集しました。 アプリケーションには複数のフォームがあります。いくつかの異なるウィンドウを開くのではなく、パネルの外にあるメインフォームの側にボタンのクラスタがあるという考えがありました。これらのボタンを使用して、対話する必要のあるフォームを呼び出します。 UIをクリーンアップし、デスクトップを乱雑にしません。全体の目標を理解するのに役立つのは ですか? – TheJak

+0

です。しかし、やはり 'フォーム 'はトップレベルのUI要素であり、'パネル'に含めることはできません。カスタムコントロール( 'Control'から直接継承するか、Windowsフォームデザイナーで編集する場合は' UserControl'から継承する)を使うことができます。しかし、あなたは 'Forms'を使うことはできません。 – adv12

+0

名前を付けて、あなたの質問に編集した実際のバージョンは、最初に使った偽のものよりも優れています。特に、 'Hub'(恐らく' Form'のサブクラスとカスタムデザインとロジック)をインスタンス化し、ジェネリックな 'Form'をインスタンス化するのに重要な違いがあります。空の 'Form'を作り、それを表示しようとする理由を理解できませんでした。 FYIでは、 'PascalCasing'ではなく' camelCasing'を使ってローカル変数に名前を付けることも推奨されていますので、クラスとパブリック/保護されたプロパティ名から簡単に区別できます。 – adv12

関連する問題