【解決方法】C# 別のフォーム内にフォームをロードするにはどうすればよいですか


別のフォーム内にフォームをロードしようとしていますが、次のようにしたいと考えています。
https://prnt.sc/255atuw[^]
https://prnt.sc/255b1s8[^]

私が試したこと:

私は単にフォームをロードしたり、ダイアログとしてロードしたり、bunifu utils を使用してロードしたりしてみました。

解決策 1

フォームとして作成する代わりに、UserControl として作成します。
その後、それをフォーム自体 (フォーム内にある独自のコントロール) として表示することも、既存のフォームの一部としてコントロールとして表示することもできます。

ここを参照してください: UserControl クラス (System.Windows.Forms) | Microsoft ドキュメント[^]

解決策 3

オリジナルグリフは正しい。
フォームを使用したい場合は、次のようなコードを使用する必要があります。

C#
Form1 insideForm = new Form1();
insideForm.TopLevel = false;
this.Controls.Add(insideForm);
insideForm.Show();

ご覧のとおり、4 つの手順を実行する必要があります。
1) 別のフォーム内に表示したいフォームのインスタンスを作成します。
2) 変更する 最上位プロパティ[^] 偽です
3) そのフォームをメインフォームのコントロールに追加します。
4) 「インサイドフォーム」を表示する

それで全部です!

幸運を!

解決策 4

1) bunifu utils: このコード ライブラリが提供するリソースについて質問することもできます。 それがあなたのシナリオにどのような影響を与えるかわかりません。

2) スクリーンショットが暗すぎて、私の老眼では読めません。

3) 別のフォーム (多くの場合、WinForm アプリの「メイン フォーム」) のコード内で別のフォームのインスタンスを作成します。

4) ‘Loadイベントを直接呼び出さない: これは、「Show」または「ShowDialog」を使用すると自動的に呼び出されます。

5. 新しいフォームを画面上で作成したフォームの上に常に表示しておきたい場合は、「新しいフォームの所有者プロパティ」を設定します。

C#
// inside the main form
Form2 f2;

// inside the main form's 'Load event handler
f2 = new Form2();
f2.Owner = this;

解決策 2

フォームを新規作成し、Show() メソッドを使用します。

コードでの簡単な答えは次のとおりです。

C#
System.Windows.Forms.Form f = new System.Windows.Forms.Form();
f.Show();

コメント

タイトルとURLをコピーしました