我有一个应用程序,其中可以有几个冗长(分钟)的任务同时发生在后台(即相同的任务,对于不同的帐户,有些帐户花费更长的时间)。我想并行显示每项任务的进度条和状态文本。我想,如果有很多这样的帐户,我可以在另一个窗口中显示,但目前的情况是只有2-4个帐户,因此我想在主窗体底部的StatusStrip中显示进度条。我认为StatusStrip应该发展壮大,我会根据任何给定时间处理的帐户数动态地将ToolStripProgressBar和ToolStripStatusLabel添加到另一个之上。这个是可能的吗?我考虑在TableLayoutPanel中使用StatusStrip,但是Visual只允许将很少的组件添加到StatusStrip中。我用编程方式添加这个有问题吗?
发布于 2017-02-03 16:01:39
可能这不是一个智能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控件。
https://stackoverflow.com/questions/42027926
复制相似问题