0

メインのGUIフォームから実行時にフォームを開いています。form.showdialog();

フォームのようなプロパティを中央に表示するように設定しました

 form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
form.ClientSize = new System.Drawing.Size(200, 50);
form.StartPosition = FormStartPosition.CenterParent;

ラベルを追加しました

Label popupLabel1 = new Label();
form.Controls.Add(popupLabel1);

問題は、form.showdialog()をform.show()に置き換えると、ラベルの内容が表示されず、この新しいフォームが中央に表示されないことです。これらの設定されたプロパティが発生しないのはなぜですか?

感謝

4

2 に答える 2

1

完全なコードを表示していません。これは、この場合に必要です。どのコードがいつどこで実行されますか?

覚えておく必要があるのは、.Show()はブロッキング呼び出しではなく、.ShowDialog()はブロッキング呼び出しであるということです。つまり、.Show / ShowDialog呼び出しの後にコードがある場合、ShowDialogを使用してもすぐには実行されず、フォームが閉じられたときに実行されます。

次のようなコードがあると仮定します。

var form = new YourForm();
form.Show(); // NOT BLOCKING!
form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
form.ClientSize = new System.Drawing.Size(200, 50);
form.StartPosition = FormStartPosition.CenterParent;
Label popupLabel1 = new Label();
form.Controls.Add(popupLabel1);

ShowをShowDialogに変更した場合は、ラベルの作成後に、Showを最後に移動する必要があります。

var form = new YourForm();
form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
form.ClientSize = new System.Drawing.Size(200, 50);
form.StartPosition = FormStartPosition.CenterParent;
Label popupLabel1 = new Label();
form.Controls.Add(popupLabel1);
form.ShowDialog(); // BLOCKING!
于 2013-02-25T10:21:59.803 に答える
0

ShowDialog()ではなくShow()を使用してフォームを表示する場合は、そのMDI親子プロパティを設定する必要があります。

次のコードを試してください:

this.IsMdiContainer = true;
form.MdiParent = this;
form.Show();
于 2013-02-25T10:14:18.323 に答える