この件については多くの情報がありますが、一部のドキュメントは一部の新しい開発者にとって理解しにくい場合があります。次の手順を実行します:
- Visual Studio を開く
- Windows フォーム アプリケーションを作成する
- フォームをクリックします
- そのフォームのプロパティに移動します
- 最小サイズ : 1366 ピクセル x 768 ピクセル。
- 最大化して起動
- 重要な要素はIsMdiContainer です
- ツールボックスを開きます。
- メニューに移動
- FileMenuをフォームにドラッグします
- メニューを作成する
- 次に、ソリューション エクスプローラーに移動します。
- アイテムを右クリックして追加
- 別のフォームを追加
- 私はForm2のままにしました (実際のプログラムでは、適切な名前ではありません)。
したがって、これらの 15 のステップの中に、目標を達成するために必要なものがすべて揃っています。したがって、タスクを完了するために行うことは次のとおりです。
- 最初のフォームに戻る
- FileMenuに移動します
- リンクしたいメニューボタンをダブルクリックします。
コード ビューが読み込まれ、領域内に次のように配置されます。
Form2 newFrm = new Form2();
newFrm.MdiParent = this;
newFrm.Show();
このコードが行っていることは、次の 3 つの異なることです。
1 行目: 実際にオブジェクト (この場合は 2 番目のフォーム) を呼び出しています。それは実際に私たちのために私たちのオブジェクトを構築しています。
2 行目: 実際に 2 番目のフォームを現在のフォームにリンクしています。これは物理的に 2 番目のフォームをChild Formに変えています。
3 行目: これは、ボタンがクリックされたときに実際に 2 番目のフォームを物理的に表示しています。
Formを物理的に表示するために必要なのはそれだけです。
2 番目の質問に関しては、何を達成しようとしているのか完全にはわかりません。ツリーを作成しようとしているように聞こえますが、ノードが選択されると、フォームの右側が特定のコンテキストに変わります。
これは良い例ではありませんが、このようなことを意味していますか?
TreeNode node = treeView1.SelectedNode;
if (node.Text.Contains("XP"))
{
TextBox one = new TextBox();
Panel i = new Panel();
i.Dock = DockStyle.Right;
i.BackColor = Color.Black;
i.Controls.Add(one);
i.Show();
TreeFrm.ActiveForm.Controls.Add(i);
}
それがあなたが求めているものかどうかはわかりません。明らかに、 FlowLayoutPanelを実装して、配置が面倒にならないようにしたいと思うでしょう。 MDI の親として機能する子フォームを使用すると、MDI の親がうまく機能しないことに注意してください。ほとんどの場合、MDI 親フォームのドッキング/配置がデフォルトになります。この例はきれいではありませんが、あなたが何を求めているのか完全にはわかりません.
他のフォームまたはコンポーネントを同じフォームにドッキングしようとしていますか?