-2

Form1有効にしてIsMdiContainer、 を追加しましたMenuStrip。私はForm1_Load「新しい」Form2で、どちらがに属しForm2.MdiParentthisいますForm1。私も最大化Form2しており、この操作はうまく機能します。

では、フォームの左側にForm2treeViewあり、フォームの右側に、 で選択されたノードまたはレベルに依存するさまざまな編集機能を備えた多数の異なるフォームを表示したいと考えていますtreeView

Form2からの選択に応じて表示されるデータを編集するためのさまざまなフォームを作成したいと思いますtreeView。フォームを MdiChild に追加できないようです。フォームにフォームを追加すると、よくわからないプログラミングの問題が発生する可能性があるという投稿を見てきました。

非常に単純な Mdi の親子関係以外は何も機能していないように見えたため、この投稿に貼り付けるコードは実際にはありません。

助けてくれてありがとう。

4

1 に答える 1

1

この件については多くの情報がありますが、一部のドキュメントは一部の新しい開発者にとって理解しにくい場合があります。次の手順を実行します:

  1. Visual Studio を開く
  2. Windows フォーム アプリケーションを作成する
  3. フォームをクリックします
  4. そのフォームのプロパティに移動します
  5. 最小サイズ : 1366 ピクセル x 768 ピクセル。
  6. 最大化して起動
  7. 重要な要素はIsMdiContainer です
  8. ツールボックスを開きます。
  9. メニューに移動
  10. FileMenuフォームにドラッグします
  11. メニューを作成する
  12. 次に、ソリューション エクスプローラーに移動します。
  13. アイテムを右クリックして追加
  14. 別のフォームを追加
  15. 私はForm2のままにしました (実際のプログラムでは、適切な名前ではありません)。

したがって、これらの 15 のステップの中に、目標を達成するために必要なものがすべて揃っています。したがって、タスクを完了するために行うことは次のとおりです。

  1. 最初のフォームに戻る
  2. FileMenuに移動します
  3. リンクしたいメニューボタンをダブルクリックします。

コード ビューが読み込まれ、領域内に次のように配置されます。

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 親フォームのドッキング/配置がデフォルトになります。この例はきれいではありませんが、あなたが何を求めているのか完全にはわかりません.

他のフォームまたはコンポーネントを同じフォームにドッキングしようとしていますか?

于 2013-05-15T22:14:40.447 に答える