我有一个带有主窗体(fMain)和两个子窗体(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 是一个带有用于用户名和密码的文本框以及几个按钮的小表单。当我的用户输入他们的凭据并单击确定按钮时,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 并使对话框神奇地居中。因此,我将 _mainForm 作为 formAdmin 的所有者传递给 formAdmin.Show() ,但这似乎无助于让 formAdmin 居中。有没有一种简单的方法可以让 formAdmin 显示在主窗体的中心?