我有一个使用 Windows.Forms.Panel
来显示图片列表的应用程序。当面板的高度超过 32767 像素时,其余内容将被截断。
例子:
Windows.Forms.Panel myPanel;
ArrayList pictureList;
foreach(pic in pictureList) {
myPanel.Controls.Add(pic) // adds all the objects without complaints
}
在这个例子中,所有元素都被添加到面板中而不会抛出错误,但在面板达到 32767 的大小后,不再显示图像。
我的问题:是否有可能打破这个限制并在面板中显示更多内容?
我知道这种方法无论如何都不方便,但现在没有时间重新设计整个应用程序。
最佳答案
这是 Windows 中的架构限制。指示窗口中位置的各种消息(如 WM_MOUSEMOVE)以 32 位整数报告位置,其中 16 位用于 X,16 位用于 Y 位置。因此,您不能创建大于 short.MaxValue 的窗口。这并不是一个真正的问题,没有人拥有比 32,767 像素更宽的显示器,而且在很长一段时间内都不会出现。
您必须以不同的方式执行此操作。就像在 Paint 方法中使用 Graphics.TranslateTransform() 一样。
关于c# - Windows.Forms.Panel 32767 大小限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8064678/