控件可以使制表符停止两次

时间:2009-06-03 14:32:01

标签: .net winforms

在标准的WinForms应用程序中,是否可以有类似以下的场景,我该怎么做:

包含四个文本框控件的表单,从上到下排列在表单上:

  • TextBox1中
  • TextBox2中
  • TextBox3
  • TextBox4

所需的行为是,当表单加载时,焦点位于TextBox3上,但是当标签显示时,焦点会转到顶部,并按照以下方式正常浏览所有控件:

  1. TextBox3
  2. TextBox1中
  3. TextBox2中
  4. TextBox3
  5. TextBox4

5 个答案:

答案 0 :(得分:1)

这将是您需要编写代码的东西,它需要正确使用事件。根据需要设置Tab键顺序,然后编写以下代码:

private bool OnLoad = True;

Form_OnLoad(...) {
    TextBox3.SetFocus();
}

TextBox3_LostFocus(...) {
    if (OnLoad) {
        TextBox1.SetFocus();
        OnLoad = false;
    } // The else falls through to the default tab order
 }

答案 1 :(得分:1)

LFSR是对的:

你必须在textBox3 LostFocus事件上编码,这是一个VB示例

static notFirstTime as boolean
if notFirstTime then exit sub
textbox1.setFocus
notfirstTime=true

答案 2 :(得分:0)

简短回答:绝对!

表单上的布局与Tab键顺序无关。您可以通过设置TabIndex属性来指定选项卡遍历 - 以及起始点。起始控件应为0,下一个为1,依此类推。此外,TabStop属性可以方便地指定Tab键可以访问哪些控件。

答案 3 :(得分:0)

您可以使用以下TabIndex属性配置将其设置为工作购买。

  • 文本框标签3 = 1
  • TextBox1 = 2
  • TextBox2 = 3
  • TextBox3 = 4
  • TextBox4 = 5

您必须将标签设置为TabStop =“True”。但我觉得这可行。请记住,我不是100%肯定...

答案 4 :(得分:0)

在你的构造函数(或设计器)中 像这样设置表索引(或类似的东西)。

this.textBox1.TabIndex = 1;
this.textBox2.TabIndex = 2;
this.textBox3.TabIndex = 0;
this.textBox4.TabIndex = 4;

然后设置一个事件,将文本框3的tabIndex设置为新值:

private void textBox3_Leave(object sender, EventArgs e)
{
    textBox3.TabIndex = 3;
}