Win Forms VB Win 10 中的应用程序 - 焦点问题

Win Forms VB App in Win 10 - focus issues

我在 Visual Studio 2012 年的 VB 中构建了一个应用程序,它在我的 windows 10 桌面上运行得非常好,但是一旦我在我的 windows 10 平板电脑我看到了几个问题:

1) 任何原本打算小于全屏的表格无论如何都会全屏显示(几乎就好像你不允许 windows 小于全屏一样)如果需要我可以接受,但肯定有解决办法吗?

2) - 最重要的一个 - 出于某种奇怪的原因,我启动了我的应用程序,当我点击一个按钮时,假设它打开了表格 6。一旦我完成我正在做的事情,代码就会关闭表格6、但是之前的窗体现在隐藏了,只能看到桌面了。即它仍然是 运行,它只是失去了焦点,必须重新选择。我知道我可以在关闭表单 6 之前将焦点设置到基础表单,但问题是:它可以是调用表单 6 的几种不同表单之一......所以我如何让应用程序知道调用的表单是什么form6 以便完成后我可以 return 关注那里?

这在桌面上似乎不是问题,所以我以前从未遇到过。我希望你们中的一位专家以前处理过这个问题

我还没有足够的积分来发表评论。我对 #1 的猜测是两个屏幕之间的分辨率或 DPI 差异,我没有使用后者的经验。

至于 #2 并让表单知道调用它的人,这就是我的做法,当然这可能不是最佳解决方案。 ;)

首先,任何可以有多个调用者的表单都有一个定义为

的变量
Dim callingForm As New Form

我通常创建一个 Initialize 例程来在加载表单之前处理尽可能多的事情,并且使用父表单 (Me) 作为参数调用此例程。

Dim frm As New frmClient
frm.Initialize(Me)
frm.Show()
Me.Hide()

在 Initialize 中,callingForm 设置为父级

Public Sub Initialize(parent As Form)
    callingForm = parent
    'whatever else you need to do to init...
End Sub

然后当您退出表单时...

Private Sub exitForm()
    'whatever other closing stuff you need to do...
    callingForm.Show()
    Me.Close()
End Sub

这应该让你开始。

供遇到此问题的任何人参考,我自己解决了它并且不需要任何编码。这是 vb 应用程序在平板电脑处于 "TABLET" 模式时和平板电脑模式关闭时的行为方式之间的差异。因此,所有需要做的就是在 windows 10 设置

中关闭增强型平板电脑模式