【发布时间】:2023-04-07 16:43:01
【问题描述】:
仅在某些具有“奇怪”视频大小的 PC 上,WinForm 应用程序无法正确设置锚定控件的大小。奇怪的用作 VGA 设备的电视。调整大小在 Win7 桌面上运行良好,但我需要该应用在会议室中同样运行。
Private Sub frmSearch2_ResizeEnd(sender As Object, e As EventArgs) Handles Me.ResizeEnd
Dim s As String = ""
s &= "me.size " & Me.Size.ToString & vbNewLine
s &= "Me.ClientSize " & Me.ClientSize.ToString & vbNewLine
s &= "dgv size: " & dgv01.Size.ToString & vbNewLine ' initially incorrect
s &= "panel size: " & Panel1.Size.ToString ' initially incorrect
Clipboard.SetText(s)
dgv01.Width = Me.ClientSize.Width - (dgv01.Left * 2) ' manually set width based on ClientSize
End Sub
在问题 PC 上执行:
me.size {Width=941, Height=578}
Me.ClientSize {Width=925, Height=540}
dgv size: {Width=939, Height=361}
panel size: {Width=964, Height=52}
请注意,dgv 比客户区域宽,即使它被锚定在所有侧面。高度正在正确调整大小。我添加了一个停靠在左右边缘的面板,以查看它是否会正确调整大小 - 不。更改 AutoScaleMode 似乎没有帮助 - 没有尝试所有可能性。请记住:缩放在大多数 PC 上都能正常工作。
手动设置 DGV 宽度的最后一行代码在视觉上是可以的。这对于一个非常简单的表单来说是可以的,但我有很多控件,其中一些托管在其他控件中,需要同样的注意。
可能是视频驱动程序问题,但代码显示 WinForm 具有正确的 ClientSize,它只是没有使用该值来调整控件的大小。
我可以调用一些东西来强制 WinForm 使用有效的 ClientSize 重新处理锚点吗?还是??
【问题讨论】:
-
锚本身应该可以工作。在您的设置中不清楚面板的滚动。 DGV 在面板内吗?
-
刚刚添加了面板以查看其锚点是否可以工作 - 他们没有。 DGV 和面板都在表格上。谜团还在继续……
-
您的问题没有得到足够好的记录,我们无法查看问题所在。我们需要查看设计器代码和任何其他相关代码(调整大小等)。
-
主播也经常给我这样的问题。我更喜欢使用大量面板并将它们对接,自从我这样做以来从未遇到任何问题。将它们放在一起需要一些工作,您必须以正确的创建顺序获得所有面板,但一旦完成,它就会完美无缺。
-
LarsTech - 这个问题可以用最基本的 WinForm 重现(在我的特定环境中)。我没有对设计器代码进行任何更改 - 没有什么可记录的。 GudidoG - 去过那里 - 请注意 OP 中的面板的大小也不正确。我的大多数表单都使用 TabControl 来托管大部分控件 - 该控件也无法正确调整大小。 ToolStripContainer 和其他容器也没有。我想我希望有人能认出有修复的 VS/.Net 错误。这不是应用程序程序员级别的错误。
标签: vb.net winforms visual-studio-2013 .net-4.0