【问题标题】:Adding a vertical scrollbar to a panel if drawn area is too large如果绘制区域太大,则向面板添加垂直滚动条
【发布时间】:2012-06-27 23:25:36
【问题描述】:

我正在使用 WinForms 和 C#。

我正在开发的应用程序在面板内绘制矩形行(使用 g.DrawRectangle())。面板可以容纳 6 个宽度的矩形(我不想水平滚动)。我在应用程序中通过计算行中的矩形来控制这一点,然后在第六个矩形之后添加到y 值。

在垂直方向上,我希望能够添加无限矩形并向下滚动以查看它们。现在,正在添加矩形,但面板没有滚动(它们只是添加到屏幕外)。

有没有办法添加垂直滚动条?我尝试将AutoScroll 属性设置为true,但这没有任何作用。

【问题讨论】:

  • 令人惊讶。 AutoScroll 通常会为我做到这一点。我怀疑这是因为您没有添加控件..
  • 嗯。也许我可以做一些 hacky,并在每次检测到溢出面板底部的矩形时向面板添加一些不可见的控件?
  • 你可以这样做,但非常非常糟糕。绘制自定义滚动条会很困难。看看问题是否出在面板中没有控件并确认。
  • 嗯。我所做的是将 Panel 放在 TabControl 内,然后将 TabPage AutoScroll 属性设置为 true。这使我可以滚动面板,但似乎每次滚动时,当前视图之外的面板区域都会被删除。即使绘制的对象不在屏幕上,有没有办法持久保存它们?此外,从不绘制最初不在屏幕上的对象(当面板处于其起始位置时)。

标签: c# winforms panel system.graphics


【解决方案1】:

问题是您正在使用图形在面板上进行绘制。这些不是控件,因此它们不会导致面板增长。您应该创建两个面板 - PanelA 包含 PanelB。 PanelA 有AutoScroll=true,但您使用 PanelB。绘制时,还设置了 PanelB 的高度,这样当它比 PanelA 大时,PanelA 就会得到一个滚动条。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多