选中Tab后,如何将焦点放在textBox上?

Jim*_*Del 3 c# tabcontrol focus

我想在选择了Tab之后将焦点放在textBox上,但无论我尝试什么它都不起作用.我在这里看过类似的问题,但他们没有得到我需要的结果.这是我尝试过的.

    private void tabBDERip_Click(object sender, EventArgs e)
    {
        textBoxPassword.Focus();
    }
Run Code Online (Sandbox Code Playgroud)

    private void tabAll_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (tabAll.SelectedTab == tabBDERip)
        {
            textBoxPassword.Focus();
        }
    }
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我做错了什么吗?

谢谢

Cor*_*ton 6

第一件事Click的事件TabPage,当用户点击控件激发内部TabPage不是标题让你的SelectedIndexChanged事件是,你要使用的一个.

我刚测试的代码非常类似于你的代码:

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (tabControl1.SelectedTab == tabPage2)
    {
        textBox4.Focus();
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好.

密码文本框未启用或类似的东西?

如果你尝试调用Focus()不同的控件那么这也行不通?

如果在SelectedIndexChanged代码中设置断点,它会被命中吗?

更新:有趣.如果断点没有被击中(在之前if),我会仔细检查你的事件处理程序是否正确连接.在您的designer.cs中查找类似的内容:

this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
Run Code Online (Sandbox Code Playgroud)

更新:我把我的工作示例放在http://www.ccswe.com/temp/SO_TextBoxFocus.zip上,也许看看它会帮助你找出问题所在.

更新:将事件处理程序附加到窗体上的控件的更简单方法:

1:选择Control要附加事件处理程序,然后单击窗口中的Events图标(闪电)Properties.

替代文字http://www.ccswe.com/temp/Attach_EventHandler_1.png

2:找到要附加的事件,然后双击右侧.

替代文字http://www.ccswe.com/temp/Attach_EventHandler_2.png

3:将自动为您生成代码存根,并将事件附加到设计器中.

替代文字http://www.ccswe.com/temp/Attach_EventHandler_3.png

如果再次查看属性窗口,您现在将看到生成的方法的名称.