メインフォーム(fMain)と2つの子フォーム(fLoginとfAdmin)を備えたwinformsアプリがあります。fLoginは、メインフォームのボタンのボタンクリックイベントハンドラーにある次のコードを使用して表示されます。
// show login form; pass the main form in as an argument
fLogin formLogin = new fLogin(this);
formLogin.StartPosition = FormStartPosition.CenterParent;
formLogin.ShowDialog(this);
fLoginのコンストラクターで、メインフォームをプライベートメンバーレベルの変数に割り当てます。
// fLogin
fMain _mainForm;
// fLogin constructor
public fLogin(fMain mainForm)
{
InitializeComponent();
_mainForm = mainForm;
}
ご想像のとおり、fLoginは、ユーザー名とパスワードのテキストボックスといくつかのボタンを備えた小さなフォームです。ユーザーが資格情報を入力して[OK]ボタンをクリックすると、fLoginはサーバーで情報を検証し、情報に問題がない場合はfLoginが消え、fAdminが表示されます。現在、次のようにfAdminを表示しています。
// hide formLogin right away
this.Hide()
// show admin form
fAdmin formAdmin = new fAdmin();
formAdmin.StartPosition = FormStartPosition.CenterParent;
formAdmin.Show(_mainForm); // pass main form as owner of admin form
// close formLogin
this.Close();
formAdmin.Parent = _mainFormを設定して、ダイアログを魔法のように中央に配置することはできません。したがって、formAdminの所有者として_mainFormをformAdmin.Show()に渡しますが、formAdminを中央に配置することに関しては役に立たないようです。formAdminをメインフォームの中央に表示させる簡単な方法はありますか?