我有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
但是它将值写入每个文本框中,而不仅仅是转到下一个文本框
答案 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