2

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

问题是当一章的总高度变得太大(估计 > 32768 像素)时,较低的块没有正确停靠:它们出现在一个后面。当试图隔离问题时,我注意到这也发生在更简单的控件上,比如LabelControl.

我尝试过的方法是Refresh(),Invalidate()PerformLayout: 它们无法解决问题。

什么帮助是调整表格的大小。之后,所有控件的布局都正确。

任何人都可以在不调整表单大小的情况下帮助解决这个问题吗?

附上一个简单的演示项目来说明问题。

截屏

4

2 回答 2

2

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

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

于 2013-11-25T13:29:30.033 回答
0

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

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

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

另外,我相信由于大脑难以在越来越多的“事物”集合中定位“事物”,用户的生产力会降低。

于 2013-11-07T12:07:46.133 回答