【发布时间】:2019-07-27 22:46:01
【问题描述】:
我有一个用 Java 制作的小应用程序,我也想用 C# 构建它。但我遇到了面板尺寸限制。
我通过读取一个文件并在该文件中的每一行中在我的持有人面板中实例化一个新对象,将一些自定义面板作为记录添加到表单的持有人面板中。
在 Java 中,您可以在 JPanel 中添加任意数量的对象,因为它使用 JScrollPane 调整大小并查看其中的所有对象。无论如何,我有一个包含 1554 记录的文件,我的 Java 应用程序将显示所有对象,但在 C# 中,由于大小限制,它只显示 738 记录。
我尝试将面板“b”添加到该支架面板,并在该面板 b 中添加所有记录(自定义面板),并将其高度设置为 Int32.MaxValue。
我已将BorderStyle 设置为FixedSingle 以便能够查看面板b 的大小。它允许我滚动超过Int16.MaxValue,但我的对象只显示到Int16.MaxValue 值。
唯一的解决方案是对所有记录进行分页?
【问题讨论】:
-
您在面板中实例化了什么“新对象”?您能否展示一个演示该问题的小代码示例?也不清楚“大小限制”是什么意思。您是否遇到异常或其他运行时错误?您还提到了
Int32.MaxValue和Int16.MaxValue,两者都远远超过1554。 -
也许您在另一个平台上使用了一个面板,并且它起作用了。这并不意味着您必须/应该在另一个完全不相关的工具中使用相同的工具(除了语言look)。您有 ListView 或 DataGridView 控件。由于您有一个包含 1554 条记录的文件,您可能会发现这些其他工具更合适。可能的话,用 UI 术语解释这些记录应该翻译成什么。
-
请参阅here 了解所有 winforms 控件的大小限制! - 我建议使用 FlowLayoutPanel。
-
这是一个带有自定义渲染 (OwnerDrawn) 的 ListView,在 .Net 术语中。你会发现它比一堆面板更容易处理(也是内存方面的)。