【问题标题】:Horizontal scroll bar not appearing in TableLayoutPanel regardless of the size of the contents in the columns无论列中内容的大小如何,水平滚动条都不会出现在 TableLayoutPanel 中
【发布时间】:2020-01-26 16:33:16
【问题描述】:

我有一个带有AutoScroll = falseAutoSize = falsepanel,其中包含一个作为Dock = DockStyle.Fill 停靠在其上的TableLayoutPanel,具有以下属性值:

ColumnCount = 2,
Dock = DockStyle.Fill,
CellBorderStyle = TableLayoutPanelCellBorderStyle.Single,
Visible = true,
AutoScroll = true,
AutoSize = false,

每列包含一个panelDock = 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,具体取决于您要查找的布局。在这种情况下,所有列都将自动调整为最长的字符串。可能需要也可能不需要。

标签: c# .net windows winforms


【解决方案1】:

AutoSize = true 用于TableLayoutPanel 不是一个好主意,因为TableLayoutPanel 滚动充满了错误。通常需要将TableLayoutPanel 放在专用的父级Panel 中,这将执行滚动操作。

这里提供的解决方案可能会对您有所帮助:TableLayoutPanel displays vertical scroll

【讨论】:

    猜你喜欢
    • 2014-02-11
    • 2021-06-05
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    相关资源
    最近更新 更多