【发布时间】:2014-01-17 14:21:36
【问题描述】:
我已经搜索但没有找到或找到但没有任何东西对我有用,因此这个问题。以下代码用于在我的主表单顶部显示进度表单。此表单必须具有焦点。
代码:
private ProgressForm _progress;
private void ShowProgress(string message)
{
Enabled = false;
_progress = new ProgressForm(message, this);
_progress.Show();
}
表格已显示,但没有焦点,见下图:
如您所见,主窗体仍然具有焦点,而不是新窗体。我想要的是这样的:
我尝试了以下方法,但都没有奏效:
_progress.BringToFront();
_progress.Focus();
_progress.Activate();
我也在新表单的构造函数中尝试了这些方法,但结果相同。有谁知道如何解决这个问题?
编辑:
我使用了“gnarlybracket”在答案中提出的解决方案,只需切换到代码行即可使其工作。同样重要的是,我发现了为什么 ShowProgress 没有集中注意力。我从表单的Load 事件中调用了该方法。如果我从表单的 Activated 事件中调用它,则会显示新表单并获得焦点。
【问题讨论】:
-
如果您不希望人们能够单击主窗体,请尝试使用 .ShowDialog() 除此之外,我无法弄清楚为什么 .Focus() 不起作用。奇数。
-
ShowDialog()不是一个选项,请参阅我对'gnarlybracket's answer的评论。