-1

我的表单中有一个文本框。单击托盘图标时,会显示表单并在表单加载时编写代码以专注于文本框。但它没有指向文本框。让我有 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`
4

3 回答 3

4

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

尝试类似:

frmTest.Show
frmTest.Select

在你Form_Activated的情况下frmTest

textbox1.Select
于 2013-09-05T11:07:07.507 回答
1

在表单的加载事件中使用表单的 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 方法。

于 2013-09-05T10:46:12.253 回答
0

TabIndex =0

或者

毕竟加载表单加载设置Textbox1.focus()

于 2013-09-05T10:38:17.653 回答