【问题标题】:How do I make a winforms progress bar move vertically in C#?如何让 Winforms 进度条在 C# 中垂直移动?
【发布时间】:2010-10-10 11:46:44
【问题描述】:

我正在开发 WinForms Jukebox。
我想要一个用于音量控制的垂直 ProgressBar。

有人知道怎么做吗?

【问题讨论】:

  • 请不要为此使用进度条;垂直轨迹栏是最合适的控件。进度条是为视觉输出而设计的,以这种方式滥用控件会导致用户界面尴尬。
  • 这是一个很好的观点。我看到了“垂直进度条”,其余的没有看。进度条可能不是用来显示音量控制级别的东西。

标签: c# winforms user-interface progress-bar


【解决方案1】:

我不知道我会使用进度条来控制音量,但要显示音量级别,您可以使用用户绘制的控件或您可以只用背景颜色调整标签的大小(不过最后一种方法有点笨拙)

进度条并不意味着接受输入,无论方向如何。

如果您真的想控制音量,请考虑使用垂直滚动条或带有a vertical orientation 的轨迹栏。

对于它的价值,有a discussion on how to create a vertical progress bar on MSDN,他们建议这样做:

using System; 
using System.Windows.Forms; 

public class VerticalProgressBar : ProgressBar { 
  protected override CreateParams CreateParams { 
    get { 
      CreateParams cp = base.CreateParams; 
      cp.Style |= 0x04; 
      return cp; 
    } 
  } 
}

Style 中设置PBS_VERTICAL 标志。

【讨论】:

  • 将以下内容添加到您的类中,当您将控件拖动到表单时,大小将正确设置。 protected override System.Drawing.Size DefaultSize { get { return new System.Drawing.Size(23,100); } }
  • 这完全可以 100% 工作。但是出于一个愚蠢的原因,我需要 3 个小时才能使其正常工作。所以我更喜欢在这里添加一些细节,这样没有人会有这种巨大的痛苦^^我在我的进度条已经在设计器上时使用它。因此,在将此代码添加到您的代码后,请确保在“工具>选项>Windows 窗体设计器>常规”中将“AutoToolBoxPopulate”选项设置为 TRUE。然后构建你的程序(调试或任何东西)。然后关闭它,然后返回设计器。新工具将弹出在工具箱顶部调用verticalProgressBar。您现在可以添加它并玩得开心。
  • 这对我不起作用,即使添加了 VerticalProgressBar 组件,它看起来也是水平的。
【解决方案2】:

您必须为此使用 ProgressBarRenderer。它记录在MSDN

文档实际上显示了垂直 ProgressBar 的实现,因此它应该会让您轻松。 :-)

【讨论】:

  • +1 这个解决方案有效,但丹尼尔留下的那个看起来更好。
  • 没问题。我刚刚告诉你微软说你应该做什么;毕竟,这是他们的框架。做与不做是你的选择。 :-)
猜你喜欢
  • 2023-04-02
  • 2010-11-20
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2017-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多