我的表单中有一个文本框。单击托盘图标时,将显示表单,并在表单加载时,我已编写代码以将焦点放在文本框上。但它没有指向文本框。 让我有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`
答案 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方法。