【问题标题】:Multiple Progress Bars in StatusStripStatusStrip 中的多个进度条
【发布时间】:2017-06-21 01:00:30
【问题描述】:

我有一个应用程序,其中可能会在后台同时执行几个冗长(分钟)的任务(即不同帐户的相同任务,一些帐户比其他帐户花费更长的时间)。我想同时显示每个任务的进度条和状态文本。我想如果有很多这样的帐户,我可以在不同的窗口中显示,但现在的情况是只有 2-4 个帐户,因此我想在主页面底部的 StatusStrip 中显示进度条形式。我认为 StatusStrip 应该长大,我会根据在任何给定时间处理的帐户数量动态地将 ToolStripProgressBar 和 ToolStripStatusLabel 添加到另一个之上。这可能吗?我正在考虑在 StatusStrip 中使用 TableLayoutPanel,但 Visual Studio 设计器只允许将很少的组件添加到 StatusStrip。我以编程方式添加这个有什么问题吗?

【问题讨论】:

  • @RezaAghaei,你为什么删除你的答案,我希望尽快尝试一下
  • 因为我问了之后没有收到任何回复这不是你的意思吗?但是如果你对解决方案感兴趣,我会再次恢复它。
  • 对不起,我想在评论答案之前尝试一下。感谢您恢复它。这确实是我的意思。
  • 很高兴它对您有所帮助 :) 不客气 :)

标签: c# multithreading winforms progress-bar statusstrip


【解决方案1】:

可能它不是智能 UI 设计,但仅供参考,您可以使用 ToolStripControlHost 添加任何控件。这是一个简单的示例,它允许您使用代码在 StatusStrip 的单个项目中添加多个 StatusBar 控件:

ToolStripControlHost host;
FlowLayoutPanel panel;
private void button1_Click(object sender, EventArgs e)
{
    if (panel == null)
    {
        panel = new FlowLayoutPanel();
        panel.FlowDirection = FlowDirection.TopDown;
        panel.WrapContents = false;
        panel.AutoSize = true;
        panel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
    }
    if (host == null)
    {
        host = new ToolStripControlHost(panel);
        this.statusStrip1.Items.Add(host);
    }
    panel.Controls.Add(new ProgressBar() { /* Value = new Random().Next(0, 100) */ });
}

注意:您还可以扩展ToolStripControlHost 以提供设计时支持,请查看How to: Wrap a Windows Forms Control with ToolStripControlHost

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多