VB .net单击按钮时更改选定文本框的文本

时间:2019-02-22 04:05:21

标签: vb.net

我有10个按钮,我想单击一个按钮,以便它更改焦点文本框的文本并切换到下一个文本框。  我试过了:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    TextBox1.Focus()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    If TextBox1.Focus Then
        TextBox1.Text = "1"
        TextBox1.Enabled = False
        TextBox2.Focus()
        TextBox2.Enabled = True
    End If
    If TextBox2.Focus Then
        TextBox2.Text = "1"
        TextBox2.Enabled = False
        TextBox3.Focus()
        TextBox3.Enabled = True
    End If
    If TextBox3.Focus Then
        TextBox3.Text = "1"
        TextBox3.Enebled= False
        TextBox4.Focus()
        TextBox4.Enabled = True
    End If
End Sub

但是它将值写入每个文本框中,而不仅仅是转到下一个文本框

2 个答案:

答案 0 :(得分:0)

在您的Click事件处理程序中,您依次调用每个Focus的{​​{1}}方法,如果成功,则填充它们。每次都会成功,因此您会填充每个TextBox

我怀疑您的意思是测试TextBox属性而不是调用Focused方法。那会更有意义,因为那样的话,它只会填充具有焦点的Focus。不过,这仍然存在缺陷,因为您刚刚单击的TextBox将具有焦点,因此您实际上不会填充任何Button

您在这里有两个主要选择。首先,您可以使用自定义TextBox控件,该控件在单击时不会聚焦。这样,单击时具有焦点的Button仍将具有焦点。另外,您可以通过将其分配给一个字段并使用它来记住上一个控件具有焦点。那可能就是我要走的路。

以下是第二种选择的快速示例(即不严格):

TextBox

答案 1 :(得分:0)

此代码不执行您认为的操作:

<ul>
  <li>
    <ng-content select=":nth-child(1)"></ng-content>
  </li>
  <li>
    <ng-content select=":nth-child(2)"></ng-content>
  </li>
</ul>

If TextBox1.Focus Then 不是布尔属性。在VB.Net中,您可以在不带括号的情况下调用方法,这就是您在这里所做的。条件块实际上是尝试设置焦点。而且,除非您明确处理并阻止该事件,否则这一切都会成功,因此,所有Focus条件的 all 都会产生If

要查找哪个控件具有焦点,请执行以下操作:

True