Vb.net 设置焦点,在我之后形成。显示
我遇到了一个特殊的焦点问题。我创建了以下“搜索”程序:Vb.net 设置焦点,在我之后形成。显示,vb.net,visual-studio-2015,focus,Vb.net,Visual Studio 2015,Focus,我遇到了一个特殊的焦点问题。我创建了以下“搜索”程序: 它在后台运行 双击Ctrl键时,它将可见 您可以键入文本框,因为表单具有焦点 如果窗体失去焦点(例如,我单击桌面),它将在3秒钟后消失 我再次双击Ctrl键,它再次变得可见 但这一次,不管我怎么做,表单都没有焦点,我无法在没有先手动点击表单的情况下输入文本框 特别有趣的是,当我在Visual Studio的调试模式下运行此程序时,双击Ctrl键并显示时,程序会重新聚焦,我可以立即开始在文本框中键入内容。但是,当我构建并单独运行该程序时,该程
- 我
- Me.Validate()
- Me.Select()
- Textbox1.Select()
- Textbox1.Focus()
- 按钮(“按钮1”)
- 文本框
- 两个计时器(“hideForm”、“showForm”),间隔均为1000
对不起,我的解释太冗长了。这是一个很难正确描述的问题。尝试
表单激活的事件处理程序,并在该处理程序中将焦点传递给文本框
您也可以尝试TextBox1,而不是Focus
。选择。提供一些附加信息以及有关焦点
和选择
之间差异的信息,请尝试表单事件处理程序激活
。在该方法中,您可以使用setFocus
获得该特定文本框的焦点。我知道这个答案太晚了。但希望这能帮助别人
Private Sub Form_Activate()
TextBox1.SetFocus
End Sub
我尝试(并为我工作)的是在事件处理程序show()
中设置文本框的Focus()
:
注意:Select()。我希望这能帮助其他有同样问题的人。在“设计视图”窗口中选择要指定焦点的文本框。
在属性窗口下,将选项卡index
设置为0(零)
我甚至不必使用TextBox1.Focus()
命令。TabIndex
覆盖了Focus命令,这仍然困扰着我。我现在已经尝试过了。在“Form1_Activated”下,我使用了Textbox1.Focus(),但运气不好。文本框看起来是选中的(蓝色边框),但表单本身不是,因此不接受按键。有趣的是,事件实际上会触发,但表单肯定没有聚焦,因为按键仍然会传递到我在表单显示之前聚焦的内容,无论是这个网络浏览器还是我的桌面,等等。表单标题栏的颜色不适合表示具有焦点的表单。@Timothy:添加了另一个选项和有用的链接。form.Activate
在表单接收焦点时发生。请尝试使用表单。改为显示。@VisualInventHello并感谢您的回复。我现在尝试使用Focus
和Select
,我在表单下都尝试过。Show
和表单。Activated
您试图违反一个非常基本的Windows可用性规则,当用户与另一个窗口交互时,您不能将窗口推到用户的脸上。按CTRL键可使操作系统确信当前窗口需要保持焦点。你将不得不以不同的方式来实现这一点,谷歌“winforms热键”用于基本点击。NotifyIcon是另一个标准解决方案。@HansPassant嘿,谢谢你的反馈。同样值得注意的是,如果在我调用Me.Hide
时程序有焦点,它将强制将焦点重新转移到Me.Show
,但是如果应用程序没有焦点使用Me.Hide
,这将不起作用。我将检查一些其他选项,但这个程序的想法是能够执行任务而不使用鼠标。我看看能找到什么。当你按Windows键时,“开始”菜单将窃取焦点。这正是我想要的。
Private Sub Form_Activate()
TextBox1.SetFocus
End Sub
Private Sub UsersForm_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
Me.UserText.Focus()
End Sub