在辅助显示屏上更改表单大小时出现问题

问题描述 投票:0回答:1

我正在使用 VB.net 创建 Windows 窗体

该表单是 VSTO Excel 插件的一部分

我使用以下方法将表单移动到辅助显示器:

Dim b As Rectangle = activeScreen.Bounds

Dim location As Point = Me.Location

Me.StartPosition = FormStartPosition.Manual

location.X = location.X + b.X
location.Y = location.Y + b.Y

Me.Location = location

其中

activeScreen
的类型为
System.windows.forms.screen

调整大小之前,我的表单大小为{宽度= 1139高度= 308}

我使用

调整表单大小
Me.size = newsize

新尺寸的值为 {Width = 2278 Height = 308}

然而,Me.size 的值莫名其妙地跳到了 {Width = 5695 Height = 770}

在屏幕上,这实际上是所看到的,表格现在比我预期的大 2.5 倍。

如果我以这种方式改变表单的高度,一切正常。同样,当我将表单保留在主显示屏上时,上面的代码可以正常工作。

两种情况下

Me.DeviceDpi
的值都是96。

我的主显示器设置中的比例为250%(推荐),显示分辨率为3200x1800,屏幕边界为[Bounds={X=0,Y=0,Width=3200,Height=1800}

设置中副显示器比例为100%(推荐),显示分辨率为1360x768,屏幕边界为{X=8000,Y=938,Width=3400,Height=1920}

vb.net winforms vsto excel-interop
1个回答
0
投票

这个问题的答案似乎与问题没有相似之处。

作为对 Form_PreviewKeyDownevent 响应的一部分,我正在调整表单大小

将代码移至 Form_KeyUp 事件,突然一切都正常运行,就像在主监视器上运行时一样。

同样徒劳的是,我的表单的一部分包含一个我可以动态更改和移动的标签。当我将表单移动到辅助显示器时,这个标签就消失了。调试大小、位置、边界等显示的数字与表单上的所有其他控件一致。尝试调用 BringToFront() ,认为可能是一些微妙的缩放导致标签移动到另一个控件后面,但这也没有帮助。

解决方案/解决方法 - 每次更改或移动标签时,将其从控件中删除并重新添加新创建的标签。再次,通过此解决方案,一切再次像在主显示器上一样工作。

© www.soinside.com 2019 - 2024. All rights reserved.