如何强制儿童的焦点形式?

时间:2011-12-28 00:33:44

标签: c# .net winforms

我在form2中尝试过:

   //... 

    var form3 = new Form3(this);

                        if (System.Windows.Forms.Application.OpenForms[form3.Name] == null)
                        {
                            form3.Show();
                        }
                        else
                        {
                            System.Windows.Forms.Application.OpenForms[form3.Name].Focus();
                        }

然后在form3中:

 public partial class Form3 : Form
    {
        public Form2 _emailForm;

        public Form3 (Form2 emailForm)
        {
            _emailForm = emailForm;
            InitializeComponent();
        }

    public void foo()
        {
           _emailForm.ForceFocus(); 
           this.Close();
        }
}

但形式没有集中。谁可以指出我的错误?提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以像这样简化:

public Form1(Form parent)
{
    InitializeComponent();
    _parent = parent;
}

private void button1_Click(object sender, EventArgs e)
{
    if (_parent != null)
        _parent.Focus();
}

我希望它能回答你的问题。否则请发表评论。

修改

Show()BringToFront()都在内部使用SafeNativeMethods.ShowWindow(...)。所以你不会注意到任何差异。但是,我认为在Show()个对象上使用Activate()Form,在BringToFront()个对象上Control使用Control更为常见1}}对象。

答案 1 :(得分:0)

如果您绝对希望用户在能够再次使用Form1之前在Form2中执行操作,请使用.ShowDialog()而不是.Show()