2011-12-27 12 views
2

私はC#フォームタブアプリケーションを持っています。各タブページには、左側にメニュー(Outlookスタイルのナビゲーションパネル)があり、右側にコンテンツ用のパネルがあります。タブコントロールのコントロールコレクションへのインデックス付け

コンテンツパネルをタブページ0にしたい場合は、どうやってフェッチするのですか?タブページのコントロールコレクションにインデックスを付ける方法がわからないので、私はちょっと困惑しています。以下は赤で下線が引かれているので、私は間違っていると信じています。

Panel panel = tabControl.TabPages[0].Controls["Panel"]; 

EDIT:パネルのサブ質問内のウィンドウを削除します。別の質問に移動します。

初心者のご質問は申し訳ございません。私はMFCの時間がたくさんあるC/C++の人です.C#UIは現時点では少しイライラしています。

+0

wpf?シルバーライト? asp.net? winforms? –

+0

@Muad - 不明瞭な文脈のために質問を '-1'する必要はありませんでしたが、OPを尋ねるだけでそれを明確にすることができます。質問は100%有効です。 – Andrey

+0

+1は怒っている暴徒を相殺します。 – Andrey

答えて

1
foreach (Control control in tabControl1.TabPages[0].Controls) 
{ 
    // if (control.Name == "panel1") 
} 

は、あなたはいつもどの階層でコントロールを見つけるために、control.Controlsに再帰的にこれを呼び出すことができます。 control.Nameを使用して特定のコントロールを見つけることができます。

フォームをパネル内に表示することはできません。機能を追加してそのコントロールをパネルに追加できるカスタムコントロールを作成することができます。

1

などの新しいフォームを作成するには、たとえば、作成したいフォームの変数を作成する必要があります。 例

Form2 frm2 = new Form2(); 
frm2.Show(); 

あなたがパネルにそのフォームを表示したい場合は、パネルは、所有者が心の中で所有者と親 の違いを保つだろうあなたがこれまで持っている、これまでどのようなコードを貼り付け、我々は提案することができますしてください必要に応じて変更

+0

MFCでは、私は通常Windowsを扱います。この場合、Panelにフォームではなくウィンドウを表示させるにはどうすればよいですか。 (もう1つの問題:C#でウィンドウを構築するにはどうすればよいですか?私は[追加]メニューから新しい[開始]を見つけることしかできません)。 – jww

+0

C#はオーナーを指定するのが好きではありません: 'Form f = new Form2(panel);'は赤で表示されますので、間違っていると思います。 – jww

1

Finally, how does one display a Window in a Panel? - あなたはそうしたくありません。ウィンドウとパネルがUI機能を共有するようにするには、すべての機能を持つユーザーコントロールを作成し、フォームまたはパネルに配置することができます。

+0

ありがとうアンドレイ。それほど多くの機能を共有するのではなく、ウィンドウを独自のフォームにレイアウトすることで、物事を分かれて整理します。 TabPageにはメニューコントロールがあることを思い出してください。つまり、すべてのメニュー項目が1つのパネルに表示されると、Panelは非常に面倒です。 – jww

1

複雑なUIコンテンツをカプセル化する可​​能性は、UserControlを作成することです。この方法で、再利用可能な複雑なUIを作成することができます。これは、基本的にフォーム内に「blob」として追加できます。 ControlsコレクションがPanelかもしれませんが、また何か他のものであるかもしれないControlを返すため

Panel panel = tabControl.TabPages[0].Controls["Panel"]; 

が赤い下線が引かれた理由です。したがって、キャストする必要があります。

Panel panel = tabControl.TabPages[0].Controls["Panel"] as Panel; 
if (panel != null) 
{ 
    // got a panel here so do something 
} 

また、MSDNにはいくつかの優れたリソースがあります。

関連する問題