WinForms:控件的最大大小为65535 – 解决方法?

在WinForms和C#中,似乎我无法创建一个大于65535的控件。如果我将其设置为70.000,则值将重置为65535.使用ILSpy挖掘Control.Size的源代码,我无法立即找到负责的代码用于夹紧尺寸。

那么这是Win32 API还是Windows Forms的限制? 有没有办法解决这个问题,例如使用非托管互操作?

我需要如此大的控件的原因是我将非常长的音频文件的音乐波形绘制到它上面。 (是的,我可以直接绘制波形,没有包含控件;但这需要大量的重构)。 我这里不是在谈论绘图代码。 显然,只需要绘制可见部分,但事实是我想要一个宽达200.000像素的控件。

这是一个winapi限制。 一个非常难的,用例如WM_MOUSEMOVE消息报告鼠标位置,鼠标位置打包到LPARAM参数中。 X位为16位,Y位为16位。

你必须处理它。 它不是对例如面板的AutoScrollMinSize属性的限制。 无论如何,这是你在这种情况下总是使用的,开始在AutoScrollPosition绘画。

我确实认为它是Windows窗体的限制,事情是,根据您的需要,WPF格式会更合适,因为它允许更大的载荷。 只是我的观点。