将焦点设置到表单

3

我的<控制台应用程序打开一个<登录表单>,用户在其中输入登录信息,问题是当这个<登录表单>打开时,<焦点>仍然设置在<控制台应用程序>上,即使<焦点>应该设置在<登录表单>上。我已经尝试使用和函数,但都没有成功。以下是我尝试将<焦点>从我的<控制台应用程序>转移到我的<登录表单>并将<焦点>设置为我的方法的示例:

static void StartLoginForm()
{
        Form frm = new Form();
        frm.ShowDialog();
        frm.Focus();//Didn't work for me
        frm.Activate();//Also didn't work for me
}

我做错了什么?非常感谢您的帮助!


感谢您抽出时间。

1
ShowDialog是一个模态调用。这意味着该调用在关闭窗体之前不会返回。因此,当您调用Focus或Activate时,该窗体不再显示在屏幕上。 - Steve
@Steve 哦,那很有道理。我尝试使用Show(),但似乎它只是在打开后立即关闭了登录表单 :/ - C0d1ng
2个回答

3
尝试这个:

试一试:

static void StartLoginForm()
{
    Form frm = new Form();
    frm.Show();
    frm.Activate();
    Application.Run(frm);
}

1
我很高兴听到这个消息!你也谢谢 :) - Abdellah OUMGHAR

1
你是否尝试过先 聚焦再显示表单
static void StartLoginForm()
{
        Form frm = new Form();
        frm.Focus();
        frm.ShowDialog();
}

是的,不幸的是,这似乎也行不通 :( - C0d1ng
Application.OpenForms[frm.Name].Focus(); 似乎引起了一个未处理的异常。这可能是因为我正在使用 frm.ShowDialog(); 来显示窗体吗? - C0d1ng
这很奇怪,因为我已经设置了frm.Name =“TestingForm”; - C0d1ng
1
你是对的...异常是因为窗体还没有打开! - Bakri Bitar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接