更改运行时添加到winform的控件的属性
本文关键字:控件 属性 winform 运行时 添加 | 更新日期: 2023-09-27 18:02:24
我需要向表单添加可变数量的进度条,然后根据需要更新它们。我可以很好地添加进度条,但无法找到更新其属性的方法。
int pbCount = 0;
void AddProgressBar(int, pbX, int pbY, int initalValue)
{
pbCount++;
ProgressBar MyBar = new ProgressBar();
MyBar.Name = "MyBar" + pbCount.ToString();
MyBar.Location = new System.Drawing.Point(pbX, pbY);
MyBar.Width = 200;
MyBar.Height = 20;
MyBar.Minimum = 0;
MyBar.Maximum = 100;
MyBar.Value = initialValue;
this.Controls.Add(MyBar);
}
那么我如何改变给定进度条的值呢?
或者是否有更好的方法来添加进度条以便稍后更新?
试试这个:
ProgressBar bar7 = this.Controls.OfType<ProgressBar>().FirstOrDefault( x => x.Name == "MyBar7" );
如果没有找到"MyBar7",它将返回null。
然后你可以根据需要更新属性。
另一种选择是将进度条也存储在Dictionary< string, ProgressBar >;
下面是一个使用LinqPad的例子:
它展示了如何向字典中添加一个新的ProgressBar,以及如何从字典中获取它。
如果你想通过索引访问ProgressBars,你也可以使用一个简单的数组。
Dictionary<string,ProgressBar> ProgressBars = new Dictionary<string,ProgressBar>();
void Main()
{
ProgressBars["MyBar1"] = new ProgressBar();
//... later on
ProgressBar progressBar = ProgressBars["MyBar1"];
progressBar.PerformStep();
progressBar.Step = 77;
progressBar.Step.Dump();
}