如何将标签一个接一个地添加到表单上



我制作了这个程序,它一直工作到没有。。。我在表单上添加带有文本的标签并设置标签。位置=新点(0,yPos);然后执行yPos+=labelHeight;

为什么一开始我的标签很好,然后我看到两个标签之间有巨大的间隙,结果yPos溢出了,所以我不能使用这种方法,有没有某种容器可以在不设置标签位置的情况下一个接一个地添加标签?此外,我的标签可以是任何高度,而且可以有很多。

我添加这些标签作为TabPage的控件。

您忽略了主要问题,即您以某种方式溢出了yPos值。因此,要么你设置y位置的逻辑有缺陷,要么你在一个表格中显示了太多数据。我的32英寸大显示器的分辨率为2500 X 1600。int的最大值(以及因此的最大y值)是2147483647。即使是一个在该分辨率下超过130万"页面"数据的可滚动表单。如果我能每秒处理一个数据的"屏幕",我将花费373小时(15.5天)来消耗该形式的所有标签。

因此,问题是而不是使用哪个控件,而是如何将一个表单中的数据量减少到可管理的数量。您需要查看筛选、搜索、排序、分页等,以将数据量提高到可管理的水平。否则它就是只读存储器。您正在显示它,但没有人能够合理地使用它。

(忽略了您可能试图添加太多标签的事实)

您可能希望使用TableLayoutPanel来添加多个控件。https://blogs.msdn.microsoft.com/jpricket/2006/04/05/winforms-autolayout-basics-tablelayoutpanel/

我相信这是一种你可以在上运行的方法

Table.Controls.Add(new Label() { Text = "textHere", Anchor = ... etc};

这样,您就不必在面板中明确定位所有内容,只需面板本身。

可能有几种方法可以满足你的要求。我的一点研究发现,这种方法通常是正确的。

不幸的是,我目前无法对此进行测试,但这可能会让你走上正轨。

当您向AutoScroll设置为true的表单添加内容时,您应该始终执行以下操作:

this.AutoScrollPosition = new Point(0,0);

多亏了汉斯·帕桑特,这才奏效。

相关内容

最新更新