c# - 表单未作为活动窗口打开
问题描述
我的应用程序中有一个主 MDI 表单和一个登录表单。我正在像这样打开我的应用程序。我想将登录作为活动表单打开,当我的登录表单打开时,用户不应该能够单击 MDI 父表单的任何控件。我在 MDI 表单中打开我的登录表单。
Form newLogin = new FormControllers.FrmLogin();
newLogin.StartPosition = FormStartPosition.CenterScreen;
newLogin.Show(this);
newLogin.Focus();
newLogin.TopMost = true;
newLogin.Activate();
然后这是我在登录表单中使用的代码:
public void activateParent()
{
if (this.Owner != null)
{
this.Owner.Enabled = true;
}
}
private void FrmLogin_Activated(object sender, EventArgs e)
{
if (this.Owner != null)
{
this.Owner.Enabled = false;
}
}
private void FrmLogin_Deactivate(object sender, EventArgs e)
{
activateParent();
}
private void FrmLogin_FormClosing(object sender, FormClosingEventArgs e)
{
activateParent();
}
当我运行程序时,登录表单仍然打开,但不是活动表单。就在我运行我的程序之后,我的 MDI 表单控制器就可以被访问了。
只有当我单击登录表单时,我的 MDI 主才会禁用。我想克服这个问题。
我想打开禁用的 MDI 表单并激活登录表单。
如何做到这一点?
解决方案
使用 ShowDialog() 而不是 Show()。
例如
newLogin.ShowDialog()
然后你应该在登录表单上添加一个检查,如果它在没有验证用户的情况下关闭它应该关闭整个应用程序,或者你可以隐藏标题栏。
推荐阅读
- ruby-on-rails - 为什么要使用 ActiveSupport::Concern 而不仅仅是一个普通的模块?
- asp.net - 为什么 DbSet<> 不适用于 asp.net 核心 Web 应用程序?
- python - django 模型选择未填充数据库
- tensorflow - Keras 模型在 1 个 epoch 后有很好的损失,但在更多 epoch 后并没有真正变得更好
- c# - 无法使具有标识符 cell_id 的单元出列 - 必须为标识符注册一个 nib 或一个类
- python - 你如何遍历 Python 中的类对象列表
- tableau-api - Tableau - 添加行而不使其成为前一行的子集
- sorting - 根据值的出现次数对切片进行排序
- xamarin.forms - 在 Xamarin.Forms 中设置 FormsVideoLibrary.VideoPlayer 的来源
- python - 使用 Scipy 在 Python 中将 Weibull 分布转换为直线