【问题标题】:VB.NET form not already selected when opened打开时尚未选择 VB.NET 表单
【发布时间】:2013-11-16 10:48:35
【问题描述】:

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

问题是这个新打开的表单尚未被选中,而只是在顶部。这会导致在我单击表单一次之前,我无法捕获按键或已经选择了我的第一个选项卡索引。

谁能帮帮我?

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

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

我尚未通过 Google 搜索找到答案。

【问题讨论】:

  • 当您使用 Showdialog() 时,表单将显示在 TopMost 上,因此其他表单将被发送到前面,您在关闭 showdialog 之前无法专注于它
  • 听起来您有一个计时器或处理程序来处理并专注于上述表单,因此您失去了对对话表单的关注

标签: vb.net forms select focus infinite-loop


【解决方案1】:

听起来您在上面的表格中有timer 或handler,handles 和focus,因此您将注意力放在新对话的表格上。

解决方案: - 删除专注于您的表单的循环或处理程序,并在背景或更外部或在 Form_Load 之后执行它。

*要明确:当您使用 ShowDialog() 时,表单将显示在 TopMost 上,因此另一个表单将被发送到前面,您无法专注于它,直到对话框关闭

【讨论】:

  • 你找到了!它可以在没有我的“循环”的情况下工作......在加载时,我实例化了一个启动“无尽”循环的类。但是这个循环应该仍然减少应用程序的“呼吸”,因为我输入了Application.DoEvents()...而且这个循环每 30 秒从表单中调用一个 sub。我怎样才能避免这个循环做出这样奇怪的事情?
  • 它与“ShowDialog”一起工作,没有循环,但我需要它
  • 我可以用线程代替吗?我害怕后台工作人员。
  • 后台工作人员在工作时不专注于表单尝试让我知道这是一种线程
  • @Che 让我知道结果?
【解决方案2】:

如果你的电脑不是很慢,你应该试试这个:

 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

显然你需要在你的项目中添加一个计时器...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-22
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    相关资源
    最近更新 更多