Form.Show()没有在表单上设置焦点

时间:2014-01-17 14:21:36

标签: c# winforms focus show

我已经搜索但未找到或找到,但没有任何对我有用,因此这个问题。以下代码用于在我的主窗体上显示进度表单。这个表格必须有重点。

代码:

private ProgressForm _progress;

private void ShowProgress(string message)
{
    Enabled = false;
    _progress = new ProgressForm(message, this);
    _progress.Show();
}

表格显示但没有焦点,见下图:

Incorrect

正如您所看到的那样,主表单仍然有焦点,而不是新表单。我想要的是这个:

Correct

我尝试过以下方法,但两种方法都不起作用:

_progress.BringToFront();
_progress.Focus();
_progress.Activate();

我也在新表单的构造函数中尝试了这些方法,但这给出了相同的结果。有谁知道如何解决这个问题?

编辑:

我使用了'gnarlybracket'答案中提出的解决方案,只需要切换到代码行就能使其工作。同样重要的是,我发现为什么ShowProgress没有集中注意力。我从表单的Load事件中调用了该方法。如果我从表单的Activated事件中调用它,则会显示新表单并具有焦点。

1 个答案:

答案 0 :(得分:1)

而不是

_progress.Show();

尝试:

_progress.ShowDialog();