8
通常、フォームにコントロールが追加されています。しかし、私は逆のことをする必要があります - フォームのインスタンスをコンテナのユーザーコントロールに追加します。フォームをUserControlに追加 - これは可能ですか?
これは、サードパーティのアプリケーションを自分自身に組み込む必要があるためです。フォームをユーザーコントロールに変換することは、複雑さのために実現できません。
通常、フォームにコントロールが追加されています。しかし、私は逆のことをする必要があります - フォームのインスタンスをコンテナのユーザーコントロールに追加します。フォームをUserControlに追加 - これは可能ですか?
これは、サードパーティのアプリケーションを自分自身に組み込む必要があるためです。フォームをユーザーコントロールに変換することは、複雑さのために実現できません。
これは、フォームの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);
}
}
これは機能します、ありがとうございます。埋め込みフォームがサイズ変更に反応しなくなりましたが、固定サイズのままです。どのようにこれを修正するための任意のアイデア? – SharpAffair
これは通常の埋め込みコントロールは、通常、ユーザーがサイズ変更することはできません。ユーザーコントロールを下と右にアンカーして、フォーム上のフォームと共にサイズを変更し、プロセス内の埋め込みフォームのサイズを変更します。 –
埋め込みフォームとユーザーコントロールの両方でDockをFillに設定します。コントロールのサイズは変更されますが、埋め込みフォームは変更されません。 – SharpAffair