顶部对接控制超过32768像素

时间:2013-11-07 11:24:56

标签: c# winforms docking

我有一个WinForms应用程序,允许您编辑文档。每个文档都由章节组成,每章都包含一组RTF块。 RTF块使用PanelControl加载到Dock = DockStyle.Top

问题在于,当章节的总高度太大(估计> 32768像素)时,较低的块未正确对接:它们彼此相邻。在尝试隔离问题时,我注意到这也发生在更简单的控件上,例如LabelControl

我尝试的内容包括Refresh()Invalidate()PerformLayout等方法:他们解决问题。

做什么有助于调整表单大小。之后,所有控件都正确布局。

任何人都可以帮助解决这个问题,而无需调整表格大小吗?

附上simple demo-project来说明问题。

screenshot

2 个答案:

答案 0 :(得分:2)

从我上面的评论(这似乎是问题):

如果尝试使用16位范围之外的坐标,则WinForms(以及一般的GDI)通常表现得不可预测。尽量避免这种情况。在可能出现问题的范围内,根本没有绘制出来的东西,意外代码位置的OverflowExceptions等等。

答案 1 :(得分:0)

如果您可以决定更改此布局,我建议您采用另一种方法来显示/编辑文档章节,使用某种分页或将RTF块折叠到菜单中并仅显示当前。

你看..它的高度值是整数16位值。 屏幕比这更小。 随着面板高度增加到如此高的尺寸。你看到使用滚动条会变得非常明智......而且这不是一件好事。

滚动大小为2x,3x,5x的内容对用户可用。但是滚动内容的高度(~32768)至少(使用最佳窗口最大化的分辨率监视器)在最佳情况下32倍窗口大小非常不舒服。

另外,我相信,由于大脑难以在越来越多的“事物”中找到“事物”,用户的工作效率会下降。