我想在选择了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();
}
}
有人可以告诉我我做错了吗?
由于
答案 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
如果再次查看属性窗口,您现在将看到生成的方法的名称。