我最初的方法是将 DataGridView 包含在面板内,将其高度设置在面板边界之外,然后更改控制面板的滚动条位置。然而,我刚刚发现我的 DataGridView 内的行数将达到 2000,这迫使我将 DataGridView 的大小至少设置为:
65 像素(行高)x 2,000 = 130,000 像素。
我的 64 位计算机上 DataGridView 控件允许的最大大小是 65,535。任何人都可以想办法解决这个问题吗?
嗯,不,你不能两全其美。 65535像素的大小限制并不是人为的,而是操作系统中硬生生的限制。根本原因是WM_VSCROLL 消息。传递的 LPARAM 参数的值记录为:
如果 LOWORD 为 SB_THUMBPOSITION 或 SB_THUMBTRACK,则 HIWORD 指定滚动框的当前位置
HIWORD 是值的高 16 位,LOWORD 是值的低 16 位。只能提供 0 .. Pow(2, 16)-1 = 0..65535 的范围。此限制在其他地方也是可见的,如果您在 ListBox 中填充超过(65535 + 可见)项,则 ListBox 会表现得很糟糕。您无法再滚动到底部。
听起来像是一个非常糟糕的问题,微软当然应该解决他们软件中如此可怕的限制。但不,这不是他们的首要任务。与看似奇怪的限制不同,WaitHandle.WaitAny() 无法处理包含超过 64 个项目的数组。这是故意的,他们认为you是我们做错了,而不是他们。而你是一个用户界面,期望用户必须通过数千成行的信息不是一个非常有用或友好的界面。例如,可以从谷歌显示数十万查询命中的方式中得到启发。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)