我有一个WinForms应用程序,允许您编辑文档。每个文档都由章节组成,每章都包含一组RTF块。 RTF块使用PanelControl
加载到Dock = DockStyle.Top
。
问题在于,当章节的总高度太大(估计> 32768像素)时,较低的块未正确对接:它们彼此相邻。在尝试隔离问题时,我注意到这也发生在更简单的控件上,例如LabelControl
。
我尝试的内容包括Refresh()
,Invalidate()
和PerformLayout
等方法:他们不解决问题。
做什么有助于调整表单大小。之后,所有控件都正确布局。
任何人都可以帮助解决这个问题,而无需调整表格大小吗?
附上simple demo-project来说明问题。
答案 0 :(得分:2)
从我上面的评论(这似乎是问题):
如果尝试使用16位范围之外的坐标,则WinForms(以及一般的GDI)通常表现得不可预测。尽量避免这种情况。在可能出现问题的范围内,根本没有绘制出来的东西,意外代码位置的OverflowExceptions等等。答案 1 :(得分:0)
如果您可以决定更改此布局,我建议您采用另一种方法来显示/编辑文档章节,使用某种分页或将RTF块折叠到菜单中并仅显示当前。
你看..它的高度值是整数16位值。 屏幕比这更小。 随着面板高度增加到如此高的尺寸。你看到使用滚动条会变得非常明智......而且这不是一件好事。
滚动大小为2x,3x,5x的内容对用户可用。但是滚动内容的高度(~32768)至少(使用最佳窗口最大化的分辨率监视器)在最佳情况下32倍窗口大小非常不舒服。
另外,我相信,由于大脑难以在越来越多的“事物”中找到“事物”,用户的工作效率会下降。