【发布时间】:2015-09-15 17:42:49
【问题描述】:
我正在创建一个 卡住的窗口 应用程序(如 TeamViewer 10),它应该如下所示:
但我有两个问题:
-
首先,如果我在加载
Form1的过程中使用以下代码显示Form2,它首先显示Form2,然后是第一种形式。Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Form2.Show() End Sub
所以我有这个,但这不是我想要的......
...但我找到了解决方案:我将Form2 设置为启动表单,然后在加载Form2 期间显示Form1。 有更简单或更合乎逻辑的方法吗?
-
其次,当 2 个表单被加载时,我如何聚焦我的
Form1(主表单)? 现在,我有这段代码(它可以工作,但这样做有点奇怪这样……):Private Sub MainFormFocus_Tick(sender As Object, e As EventArgs) Handles MainFormFocus.Tick Form1.Focus() MainFormFocus.Stop() End Sub
MainFormFocus 对象是 Timer,其中 Enabled 属性设置为 True,Interval 设置为 1。
上面的所有代码都有效,但有点棘手......这就是为什么我想以不同的方式来做。
【问题讨论】:
-
您关注的是错误的问题。您需要订阅 LocationChanged 属性,以便正确定位另一个窗口。现在,哪个窗口是“第一个”不再重要了。
-
对我来说,这很重要!
-
如果在 Form1 的加载事件中显示 Form2,那么它自然会首先可见,因为 Form1 在加载事件完成之前是不可见的。您可以尝试在 Form1 的 OnFormShown 覆盖中显示 Form2。
-
@ChrisDunaway 我试试这个,谢谢!