代码之家  ›  专栏  ›  技术社区  ›  JimDel

如何在选中选项卡后将焦点放在文本框上?

  •  3
  • JimDel  · 技术社区  · 16 年前

    我想在选中一个标签后将焦点放在一个文本框上,但不管我怎么尝试,它都不起作用。我在这里看到过类似的问题,但他们没有给我所需要的结果。这是我试过的。

        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 回复  |  直到 10 年前
        1
  •  6
  •   Cory Charlton    16 年前

    第一件事 Click 事件 TabPage 控件在用户单击时激发 里面 这个 制表 不在标题上,所以 SelectedIndexChanged 事件是您要使用的事件。

    我刚测试的代码与您的非常相似:

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

    而且效果很好。

    密码文本框是否未启用或类似?

    如果你想打电话 Focus() 在另一个控件上,这也不起作用吗?

    如果在 选择的索引已更改 代码会被击中吗?

    更新: 有趣。如果未命中断点(在 if )我会再次检查您的事件处理程序是否正确连接。在designer.cs中查找以下内容:

    this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
    

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

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

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

    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

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