我正在尝试在c#中进行宏转换。其实我正在努力学习c#。我在Visual Fox中很有经验。
无论如何,我需要的是:
让我说我正在尝试添加一个新的控制程序:
ProgressBar progressBar1 = new ProgressBar();
progressBar1.Size = new System.Drawing.Size(516, 23);
progressBar1.Location = new Point(10, 36);
groupBox4.Controls.Add(progressBar1);
现在我需要知道一种方法如何替换控件(progressBar1)的名称并为字符串变量设置名称,以便我可以使用for语句创建多个进度条 ?
任何想法?
答案 0 :(得分:1)
如果要保留对可以将它们存储到词典中的项目的引用,则必须将代码放在for循环中以创建进度条的多个实例,例如:
Dictionary<int, ProgressBar> progressBars = new Dictionary<int, ProgressBar>();
for(int i = 0; i < someValue; i++) {
ProgressBar progressBar = new ProgressBar();
progressBar.Size = new System.Drawing.Size(516, 23);
progressBar.Location = new Point(10, 36);
groupBox4.Controls.Add(progressBar);
progressBars.Add(i, progressBar);
}
所以,现在你可以通过索引(或者你定义为键的其他东西)回到字典中查找所需的进度条... ...
使用索引3(通过索引器)取回进度条的示例:
ProgressBar bar = progressBars[3];
bar.Value = //Assign some value
答案 1 :(得分:1)
progressBar1不是控件的名称。 ProgressBar类型的变量的名称是否用于处理ProgressBar的当前实例。
从Control派生的每个类都有一个名为Name的字符串类型的属性。
int xPos = 10;
int yPos = 36;
// Add 10 progressbars to the groupbox control collection
for(x = 0; x < 10; x++)
{
yPos = yPos + (x * 30);
ProgressBar progressBar1 = new ProgressBar();
progressBar1.Name = "pgb" + x.ToString();
progressBar1.Size = new System.Drawing.Size(516, 23);
progressBar1.Location = new Point(10, yPos);
groupBox4.Controls.Add(progressBar1);
}
要检索一个添加的进度条,您只需使用组框的Controls对象集合即可。
ProgresBar pb = groubBox4.Controls["pgb1"] as ProgressBar;
pb.Increment(1);