专注于表格上的回报

时间:2012-08-12 21:05:47

标签: c# visual-studio

我有两种形式。我用这段代码展示了我的第二个表格:

Form2 f = new Form2();
f.ShowDialog();

我需要了解焦点何时返回主窗体。我尝试了Activate事件,但事实并非如此。

2 个答案:

答案 0 :(得分:4)

对ShowDialog()的调用阻止了父窗体 当您的代码退出ShowDialog()时,您当前的表单将再次变为活动状态

例如:

using(Form2 f = new Form2())
{
    // At the moment of the call of ShowDialog, the Net Framework start its work to
    // pass the focus to the first control in the Form2 instance
    if(DialogResult.OK == f.ShowDialog())
    {
        // Form confirmed, do your stuff
    }
}

// At the end of the using block the parent form is again the active form with the focus on
// the button that has started this process (or the last control that had focus)

答案 1 :(得分:1)

键入

Form2 f = new Form2();
f.ShowDialog();

它等待,直到您手动关闭Form2实例,然后返回到主窗体。如果您使用ShowDialog()方法,则会发生这种情况。

在某些情况下,如果您只想弹出另一个表单几分之一秒并返回主表单,则应使用formInstance.Show()方法。 Show()方法不等待第二个表单被关闭,它立即执行并将控件传递给Show()语句后的下一个语句。

希望你理解它。