2011-09-06 5 views
8

通常、フォームにコントロールが追加されています。しかし、私は逆のことをする必要があります - フォームのインスタンスをコンテナのユーザーコントロールに追加します。フォームをUserControlに追加 - これは可能ですか?

これは、サードパーティのアプリケーションを自分自身に組み込む必要があるためです。フォームをユーザーコントロールに変換することは、複雑さのために実現できません。

答えて

11

これは、フォームのTopLevelプロパティをfalseに設定することで可能です。これは子ウィンドウに変わり、UserControlとほとんど区別できません。必要なコードのサンプルユーザーコントロールを次に示します。

public partial class UserControl1 : UserControl { 
    public UserControl1() { 
     InitializeComponent(); 
    } 
    public void EmbedForm(Form frm) { 
     frm.TopLevel = false; 
     frm.FormBorderStyle = FormBorderStyle.None; 
     frm.Visible = true; 
     frm.Dock = DockStyle.Fill; // optional 
     this.Controls.Add(frm); 
    } 
} 
+0

これは機能します、ありがとうございます。埋め込みフォームがサイズ変更に反応しなくなりましたが、固定サイズのままです。どのようにこれを修正するための任意のアイデア? – SharpAffair

+0

これは通常の埋め込みコントロールは、通常、ユーザーがサイズ変更することはできません。ユーザーコントロールを下と右にアンカーして、フォーム上のフォームと共にサイズを変更し、プロセス内の埋め込みフォームのサイズを変更します。 –

+0

埋め込みフォームとユーザーコントロールの両方でDockをFillに設定します。コントロールのサイズは変更されますが、埋め込みフォームは変更されません。 – SharpAffair

関連する問題