我有一个应用程序,其中可能有几个冗长(分钟)任务同时在后台发生(即不同帐户的相同任务,一些帐户比其他帐户花费更长时间)。我想并行显示每个任务的进度条和状态文本。我想我可以在不同的窗口显示如果有很多这样的帐户,但是现在的情况只有2-4个帐户,因此我想在主要底部的StatusStrip中显示进度条形成。我认为StatusStrip应该会成长,我会根据在任何给定时间处理的帐户数量,动态地添加ToolStripProgressBar和ToolStripStatusLabel。这可能吗?我在考虑在StatusStrip中使用TableLayoutPanel,但Visual Studio设计器只允许将极少数组件添加到StatusStrip中。我是否有任何问题以程序方式添加?
答案 0 :(得分: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
以提供设计时支持,为此,请查看How to: Wrap a Windows Forms Control with ToolStripControlHost。