【发布时间】:2020-01-26 16:33:16
【问题描述】:
我有一个带有AutoScroll = false 和AutoSize = false 的panel,其中包含一个作为Dock = DockStyle.Fill 停靠在其上的TableLayoutPanel,具有以下属性值:
ColumnCount = 2,
Dock = DockStyle.Fill,
CellBorderStyle = TableLayoutPanelCellBorderStyle.Single,
Visible = true,
AutoScroll = true,
AutoSize = false,
每列包含一个panel 和Dock = DockStyle.Fill,其中包含一个LinkLabel 和以下属性值:
AutoSize = true,
Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right,
UseCompatibleTextRendering = true,
Size = new Size(190, 19),
Font = new Font(this.Font.Name, 14.5f, FontStyle.Regular, GraphicsUnit.Pixel),
LinkBehavior = LinkBehavior.AlwaysUnderline,
Location = new Point(0, 0),
LinkLabel 的文本以编程方式动态设置,可以包含相当长的链接,需要TableLayoutPanel 水平滚动。当存在很多行时,垂直滚动会根据需要显示。另一方面,即使LinkLabel 中有很多字符,水平滚动(通过水平滚动条)似乎也不会出现。我尝试摆弄AutoSize 属性,将每个Control 都设置为false,因为根据我过去的经验,这些可能会导致滚动条不出现。
提前致谢。
【问题讨论】:
-
您的 LinkLabel 是面板的子级。如果有东西可以滚动,那就是这个面板。该面板也设置为填充 TLP 单元,因此它不能自动调整大小,最终只能自动滚动。 TLP 没有注意到它。
-
您可以做的是将LinkLabel的父面板设置为AutoSize,将除最后一个之外的所有TLP列设置为AutoSize,将最后一个设置为固定宽度。在这种情况下,当固定大小的列不适合时,TLP 将显示水平滚动条。或者将所有列设置为 AutoSize,具体取决于您要查找的布局。在这种情况下,所有列都将自动调整为最长的字符串。可能需要也可能不需要。