【问题标题】:Winform: Panel with scroll needs to have their width/height defined?Winform:带滚动的面板需要定义其宽度/高度吗?
【发布时间】:2013-03-21 16:17:20
【问题描述】:

我有一个 winform 用户控件,它有一个面板,其中包含一些 TableLayout(还有一些其他用户控件)。

我所有的组件都有Dock=FillAutosize=True 属性。

目前,当我调整窗口大小时,我没有任何滚动条,溢出只是没有显示。

我发现,如果我将面板的 AutoScrollMinSize 设置为某个值,当我达到设定的大小时,就会出现那些滚动条。

我的问题是我在运行时添加/删除元素,而且我还根据配置显示或不显示一些内容。所以对我来说,很难在这里硬编码一个值,要么我滚动条太早,要么太晚。

我确定应该有一种方法可以配置我的userControl,而不必自己计算大小,让组件显示滚动条,当孩子的内容无法显示时,你知道怎么做吗?

谢谢!

【问题讨论】:

  • 计算大小是这样做的,这并不难。一般来说,要避免将大量时间用于使 UI 在用户永远不会使用的模式下可用,因为它变得太麻烦了。确保它可以在没有滚动条的 1024x768 窗口大小中使用。使其在较小时仍可操作的一种简单方法是使表单可滚动。将其 AutoScroll 属性设置为 True 并将 AutoScrollMinSize 设置为足够大以显示 TLP。
  • 这不是我要问的。我对与他的业务相关的客户有限制。例如,如果他们是管理员,宽度可以是 1000 或 1300 个参数,他们希望这样
  • 是的,我会买那个。它是 1024 和 1366,常用的屏幕宽度。有一个确切知道他想要什么的客户总是很高兴。你最好开始它并重新设计你的布局,使它们适合这些屏幕尺寸,而不需要水平滚动条。

标签: c# .net winforms


【解决方案1】:

您可以在面板调整大小事件或表单的调整大小事件上更改 AutoScrollMinSize 值。这样,它就不是一个固定值,并且如果面板的子控件超出面板边缘,就会有一个可用的滚动条 -

private void panel1_Resize(object sender, EventArgs e)
{
    panel1.AutoScrollMinSize = new System.Drawing.Size(panel1.Width, panel1.Height);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 2012-08-28
    相关资源
    最近更新 更多