【问题标题】:scroll bar TableLayoutPanel c#滚动条 TableLayoutPanel c#
【发布时间】:2011-09-15 08:43:18
【问题描述】:

我有一个 TableLayoutPanel,里面有几个 TableLayoutPanel。数量是动态变化的,几乎总是太多而无法放入表单中。我需要它有一个滚动条,这样我才能查看整个组件。

我尝试将主面板上的 autoscroll 属性设置为 true 并将其停靠和/或设置最大尺寸。相反,控制器所做的是尝试将所有面板放入表单中,从而更改其内部组件的大小并将它们全部挤压在一起,而不是创建滚动条来滚动浏览我的面板。

你们知道我做错了什么吗?

谢谢。

何塞

PS:我使用的是 VS 2010

【问题讨论】:

标签: c# scrollbar tablelayoutpanel


【解决方案1】:

TableLayoutPanel 滚动充满了错误。 使其正常工作的解决方案是here

【讨论】:

    【解决方案2】:

    迟到的答案,但我最近一直在与复杂的布局作斗争,并且正在寻找一种解决方案来让我的滚动在具有太多字段的屏幕上工作。老实说,更好的设计应该能在 99% 的情况下避免这个问题,但有时你的双手只是束手无策。

    问题

    问题似乎在于,如果您与多个网格、组和面板嵌套得太深,它们将停止向父控件正确报告其内容已超出当前屏幕的大小。实际上,问题可能是控件都设置为停靠填充并且确实适合它们的父控件,因此顶级控件不知道其great-great-great-的内容曾孙控件不适合。

    解决方案

    解决此问题的技巧似乎是手动强制最顶部的面板以某个最小尺寸滚动:

    MainPanel.AutoSize = true;
    MainPanel.AutoScrollMinSize = new Size(400, 500);
    

    【讨论】:

    • 是的!谢谢你,这个问题太久了。
    【解决方案3】:

    有一天我遇到了同样的问题,发现问题是我为 TableLayoutPanel 设置了“MinimumSize”。无论 Dock 和/或 Anchor 约束如何,这都会导致控件保持最小高度,从而阻止 AutoScroll 功能正常工作。由于该功能基于对控件的所有子控件的 Y 坐标与该控件的高度进行简单检查,因此尽管 TableLayoutPanel 的子控件由于其父控件而“消失”而看不见,但滚动条并未出现剪辑区域。

    也就是说,检查 TableLayoutPanel 的 MinimumSize 属性并确保它是空的。

    【讨论】:

      【解决方案4】:

      我的项目也发生了同样的事情。我的所有控件都在 TableLayoutPanel 中被压扁。就我而言,我将许多控件呈现为 ColumnStyle.Percent。将此切换到 ColumnStyle.Autosize 是我需要的修复。

      我假设您也设置了这些属性,但以防万一我的 TableLayoutPanels 也使用以下设置:

      AutoSize = true;
      AutoSizeMode = AutoSizeMode.GrowAndShrink;
      AutoScroll = true;
      

      【讨论】:

        【解决方案5】:

        也许this 会有所帮助。

        如果还是不行,试着放一个面板,然后把 tableLayoutPanel 放到那个面板里。将面板的 autoScroll 属性设置为 true。

        【讨论】:

        • 我已经看到了你发给我的链接,关于你的建议,我试过了,它没有用,它只是给出了相同的结果..
        猜你喜欢
        • 2013-10-26
        • 1970-01-01
        • 2017-12-09
        • 2012-08-04
        • 2013-03-15
        • 1970-01-01
        • 1970-01-01
        • 2013-02-05
        • 2023-03-05
        相关资源
        最近更新 更多