1

私はコードを生成するプログラムを作成しており、インターフェイスが非常に簡単であるため、Game Maker の後に UI を作成しています。TreeView を含む Panel1 と任意の量の自己完結型ウィンドウを含む Panel2 を含む SplitContainer があります (実際のウィンドウであり、ハッキーな回避策ではありません)。ユーザーコントロールを使用して、変更に使用するコントロールを保存したかったのですが、splitContainer の Panel2 内のウィンドウに配置する方法がわかりません。誰でも私を助けることができますか?

良い例を次に示します。

http://i.stack.imgur.com/CG6kO.png

これら 2 つのスプライト プロパティ ウィンドウは、私がやろうとしていることです。

4

4 に答える 4

2

あなたが探しているのはmdi-containerと呼ばれるものだと思います

ただし、これまで (.NET で) 見た唯一の実際の mdi コンテナーはフォームです...悲しいことに、パネルや類似のものはありません...

ただし、「ウィンドウ内のウィンドウ」効果が必要な場合は、新しいフォームを作成し、TopLevelそのインスタンスのプロパティをに設定しfalse、インスタンスをフォーム/パネル/分割コンテナ/その他の通常のコントロールと同様に追加します。

于 2011-07-04T00:46:43.800 に答える
1

MDI フォームを使用して TreeView コントロールを実装し、ある種のドッキング パネルを確認することができます。私は過去にこれを使用しました (http://sourceforge.net/projects/dockpanelsuite/)。

非常に柔軟です。これらのドックパネル フォームの 1 つをセットアップし、MDI フォームの左側にドッキングします。これは常に「上」にあり、ユーザーはフォームのスプリッター コントロールとまったく同じようにサイズを変更できます。必要に応じて、「自動非表示」機能を使用することもできます。これは、場合によっては望ましい場合と望ましくない場合があります。

次に、必要なすべての MDI 子フォームをロードできるツリービューを含めることができます。

「Windows」が実際にどのように動作したいかと戦っていないことがわかり、物事がよりスムーズに実行されます.

于 2011-07-04T01:43:46.403 に答える
0

Add() メソッドを介して Panel2 の Control コレクションに配置し、座標、アンカー、およびドッキングをプログラムで適用します。

于 2011-07-03T22:47:55.633 に答える
0

私は一度同様のことをしました。そのため、ReplaceControl メソッドがあり、以下に貼り付けます。

    static public void ReplaceControl(Control ToReplace, Form ReplaceWith) {
        ReplaceWith.TopLevel=false;
        ReplaceWith.FormBorderStyle=FormBorderStyle.None;
        ReplaceWith.Show();
        ReplaceWith.Anchor=ToReplace.Anchor;
        ReplaceWith.Dock=ToReplace.Dock;
        ReplaceWith.Font=ToReplace.Font;
        ReplaceWith.Size=ToReplace.Size;
        ReplaceWith.Location=ToReplace.Location;
        ToReplace.Parent.Controls.Add(ReplaceWith);
        ToReplace.Visible=false;
    }

あとは、フォームのプレースホルダーとして、フォーム上にコントロールを手動で作成するだけです。たとえば、ラベルを使用します。

ランタイム組み込みフォーム切り替えを使用して a-form-inside-a-form を実装する方法から?

于 2011-07-03T23:16:56.613 に答える