【问题标题】:Set Focus to Form将焦点设置为表单
【发布时间】:2016-05-21 22:52:56
【问题描述】:

我的c# console application 打开一个login form,用户在其中输入登录信息,问题是当这个login form 打开focus 时仍然设置为console application,即使应该设置focuslogin form。我试过同时使用Focus()Activate() 函数,但没有任何运气。这是我如何尝试将focus 设置为远离我的console application 并将focus 设置为我的login form 的示例:

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

我做错了什么?任何帮助将不胜感激!


感谢您的宝贵时间。

【问题讨论】:

  • ShowDialog 是一个模态调用。这意味着在您关闭表单之前调用不会返回。因此,当您调用 Focus 或 Activate 时,屏幕上不再显示表单
  • @Steve Ohh,这是有道理的。我试过使用 Show() 但这似乎只是在登录表单打开后立即关闭:/

标签: c# .net console console-application


【解决方案1】:

试试这个:

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

【讨论】:

  • 我很高兴听到这个消息!也谢谢你:)
【解决方案2】:

您是否尝试过先聚焦然后显示表单

static void StartLoginForm()
{
        Form frm = new Form();
        frm.Focus();
        frm.ShowDialog();
}

【讨论】:

  • 是的,不幸的是,这似乎也不起作用:(
  • Application.OpenForms[frm.Name].Focus();似乎导致了一个未处理的异常。这可能是因为我正在使用 frm.ShowDialog();显示表单?
  • 这很奇怪,因为我设置了 frm.Name = "TestingForm"; ://
  • :-(你是对的..例外是因为表单还没有打开!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-04
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
相关资源
最近更新 更多