打开时尚未选择VB.NET表单

打开时尚未选择VB.NET表单,vb.net,forms,select,focus,infinite-loop,Vb.net,Forms,Select,Focus,Infinite Loop,我使用ShowDialog()打开另一个自定义表单 问题是这个新打开的表单还没有被选中,只是在上面。这导致在单击表单之前,我无法捕获按键或选择第一个选项卡索引 有人能帮我吗 我已经在Form_Load中尝试了这些,但它还不起作用: Me.Activate() Me.BringToFront() Me.Focus() Me.Show() Me.Select() 我在谷歌上搜索时还没有找到答案 听起来您有一个计时器或处理程序来处理上述表单上的和焦点,因此您将焦点放在了新对话的表单上 解决方案: -

我使用ShowDialog()打开另一个自定义表单

问题是这个新打开的表单还没有被选中,只是在上面。这导致在单击表单之前,我无法捕获按键或选择第一个选项卡索引

有人能帮我吗

我已经在Form_Load中尝试了这些,但它还不起作用:

Me.Activate()
Me.BringToFront()
Me.Focus()
Me.Show()
Me.Select()

我在谷歌上搜索时还没有找到答案

听起来您有一个
计时器
处理程序
来处理上述表单上的
焦点
,因此您将焦点放在了新对话的表单上

解决方案: -移除关注表单的循环或处理程序,并在后台或更外部的环境中或在加载表单后执行


*需要明确的是:当您使用ShowDialog()时,表单将显示在最上面,因此另一个表单将被发送到最前面。在对话框关闭之前,您无法对其进行聚焦

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

   ClickForm.Interval(1000)
   ClickForm.Start()

   'Set the interval and start the timer

End Sub

Private Sub ClickForm_Tick(sender As Object, e As EventArgs) Handles ClickPanel.Tick
   'Wait for form charging

    Me.Select()

   'Select the form

End Sub

显然,您需要在项目中添加计时器…

当您使用Showdialog()时表单将显示在最上面,因此另一个表单将被发送到最前面。在showdialog关闭之前,您无法对其进行聚焦。听起来您有一个计时器或处理程序来处理并聚焦上述表单,因此您失去了对对话表单的聚焦。您找到了它!它在没有我的“循环”的情况下工作。。。在加载时,我实例化了一个类,它启动一个“无止境”循环。但是这个循环应该更不用说应用程序的“呼吸”,因为我把
application.DoEvents()
。。。此外,此循环每30秒从窗体调用一个子对象。我怎样才能避免这个循环产生像这样奇怪的东西?它与“ShowDialog”一起工作,没有循环,但我需要它。我可以用线程来代替吗?我非常害怕背景工作人员。背景工作人员工作时没有关注表格,请尝试让我知道这是一种thread@Che让我知道结果?