1

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

4

1 回答 1

1

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

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以提供设计时支持,请查看如何:使用 ToolStripControlHost 包装 Windows 窗体控件

于 2017-02-03T16:01:39.320 回答