如何将焦点从另一个窗体(C#)设置为主窗体中的对象(文本框)

如何将焦点从另一个窗体(C#)设置为主窗体中的对象(文本框),c#,.net,winforms,focus,controls,C#,.net,Winforms,Focus,Controls,我知道的都试过了。问题一定是我的文本框在groupbox中。我有一个主窗体,从该窗体移到另一个窗体。当我返回Mainform时,我希望聚焦一个特定的对象。这是怎么做到的? 这是我的主窗体中的代码 private void button1_Click(object sender, EventArgs e) { Form1 frm = new Form1(); frm.ShowDialog(); } 现在,这就是我如何从Form1返回我的

我知道的都试过了。问题一定是我的文本框在groupbox中。我有一个主窗体,从该窗体移到另一个窗体。当我返回Mainform时,我希望聚焦一个特定的对象。这是怎么做到的? 这是我的主窗体中的代码

    private void button1_Click(object sender, EventArgs e)
    {
         Form1 frm = new Form1();
         frm.ShowDialog();
    }
现在,这就是我如何从Form1返回我的主窗体的方法

    private void button3_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.OK;
    }
我在Mainform中有textBox1。如何在退出Form1并进入Mainform时将焦点设置为textBox1。我试过
textBox1.Focus()
this.ActiveControl=this.textBox1加载
显示
激活
输入
事件。还是不行。我尝试创建一个公共方法,并在Form1的exit按钮下调用它。像这样

以主要形式,

    public void textBox1Focus()
    {
        textBox1.Focus();
    }
然后在表格1中

    private void button3_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.OK;
        Mainform frm = new Mainform();
        frm.textBox1Focus();
    }
但还是没用。我的文本框1在一个分组框中。这可能是原因吗


谢谢。

我不明白你展示的代码是如何编译的。您正在从
Form1
类中定义的方法内部调用
textBox1Focus()
,据我所知,该类不包含
textBox1Focus
的定义。该方法仅在
Mainform
类中定义

不,文本框放在分组框中并不会阻止它获得焦点。你的代码还有其他问题。很难说;我觉得我是通过百叶窗看日落,而不是通过一个大的图片窗口

无论如何,我想有一个更简单的解决办法。只需将焦点设置为
按钮1\u单击方法末尾的textbox控件。ShowDialog方法是一个阻塞调用,这意味着在用户关闭第二个表单之前执行不会继续。当这种情况发生时,执行将继续执行下一行代码,这将把焦点设置为textbox控件

尝试将代码更改为以下内容:

private void button1_Click(object sender, EventArgs e)
{
     Form1 frm = new Form1();
     frm.ShowDialog();
     this.textBox1.Select();
}

是的,你成功了。您的代码工作成功,我对此表示感谢!对m代码中的错误进行重新分级,很抱歉。那是个小错误。我在问题中编辑并修正了它。但告诉你们,我已经在我的实际代码中正确地完成了它(否则就会显示错误)。这种方法仍然很有效。但是你的把戏确实奏效了:)@nawfal:没问题;很高兴我能帮忙。为了便于将来参考,只需将代码复制并粘贴到问题中就容易多了。这就减少了可能出现的打字错误。我们很难按原样调试代码,因为我们无法在上下文中看到它。你不能只忽略语法错误,因为这些往往是真正的问题!实际上,我复制粘贴我的代码只是为了让代码看起来更理智和简单。但事与愿违;-)