如何聚焦TextBox VB.Net

时间:2013-09-05 10:27:24

标签: .net vb.net

我的表单中有一个文本框。单击托盘图标时,将显示表单,并在表单加载时,我已编写代码以将焦点放在文本框上。但它没有指向文本框。 让我有2个表单formB和formC我从formB调用formC,这样我就没有得到焦点。如何把重点放在第二种形式上? 我找到了解决这个问题的方法。我们必须覆盖show方法。我们说formA和formB。然后FormB成为焦点。

Private Sub FormB_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.Timer1.Enabled = True
    Me.Timer1.Interval = 2000
End Sub`

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    Timer1.Enabled = False
    Dim frmquickListPHD1 As New FormC()
    frmquickListPHD1.Show(CallingForm, CallingControl, Me)
End Sub

   Overloads Sub Show(ByVal f1 As Form, ByVal c As Control, ByVal f2 As Form)
    callingform = f1
    MenuForm = f2
    callingcontrol = c
    Show()
End Sub
Private Sub FormC_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.TextBox1.Focus()
End Sub`

3 个答案:

答案 0 :(得分:3)

问题可能是表单从系统托盘中打开时没有焦点?

尝试类似:

frmTest.Show
frmTest.Select

Form_Activated事件frmTest

textbox1.Select

答案 1 :(得分:0)

设置TabIndex =0

全部加载到表单加载后 设置Textbox1.focus()

答案 2 :(得分:0)

在表单的load事件中使用表单的ActiveControl属性:

Me.ActiveControl = Textbox1

或者,如果您在某些事件中从FormA显示FormB的实例,那么您可以在FormA中使用以下代码:

Dim FormB1 as new FormB
FormB1.show()
FormB1.ActiveControl = FormB1.Textbox1

请勿使用msdn(http://msdn.microsoft.com/en-us/library/system.windows.forms.control.focus.aspx)中的焦点:

Focus是一种低级方法,主要用于自定义控件作者。相反,应用程序员应该对子控件使用Select方法或ActiveControl属性,或者对表单使用Activate方法。