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

时间:2010-02-07 17:44:05

标签: c# focus tabcontrol

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

    private void tabBDERip_Click(object sender, EventArgs e)
    {
        textBoxPassword.Focus();
    }

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

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

由于

1 个答案:

答案 0 :(得分:6)

Click控件的TabPage事件首先触发,当用户点击内的 TabPage而不是标题时,SelectedIndexChanged private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { if (tabControl1.SelectedTab == tabPage2) { textBox4.Focus(); } } 事件是您要使用的事件。

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

Focus()

它工作正常。

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

如果您尝试在其他控件上调用SelectedIndexChanged,那么这也不起作用吗?

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

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

Control

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

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

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

alt text http://www.ccswe.com/temp/Attach_EventHandler_1.png

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

alt text http://www.ccswe.com/temp/Attach_EventHandler_2.png

3:将自动为您生成代码存根,该事件将附加在设计器中。

alt text http://www.ccswe.com/temp/Attach_EventHandler_3.png

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