c#中的宏替换

时间:2012-08-05 15:46:57

标签: c# winforms

我正在尝试在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语句创建多个进度条 ?

任何想法?

2 个答案:

答案 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);