我有 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
但它会在每个文本框中写入值,而不仅仅是转到下一个文本框
此代码不会执行您认为的操作:
If TextBox1.Focus Then
Focus
是不是一个布尔属性。在 VB.Net 中,您可以调用不带括号的方法,这就是您在这里所做的。条件块实际上尝试设置焦点。而且由于除非您明确处理事件并阻止它,否则这总是会成功,所有这些If
条件都会导致True
.
要查找哪个控件具有焦点,请执行以下操作:
Public Shared Function FindFocusedControl(control As Control) As Control
Dim container = TryCast(control,IContainerControl)
While container IsNot Nothing
control = container.ActiveControl
container = TryCast(control, IContainerControl)
End While
Return control
End Function
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句