C# c语言中的宏替换#

C# c语言中的宏替换#,c#,winforms,C#,Winforms,我正试图用c#进行宏观替代。事实上,我正在努力学习c。我对视觉狐狸很有经验 无论如何,这就是我需要的: 假设我正在尝试添加一个新的控制程序: ProgressBar progressBar1 = new ProgressBar(); progressBar1.Size = new System.Drawing.Size(516, 23); progressBar1.Location = new Point(10, 36); groupBox4.Controls.Add(progressBar1)

我正试图用c#进行宏观替代。事实上,我正在努力学习c。我对视觉狐狸很有经验

无论如何,这就是我需要的:

假设我正在尝试添加一个新的控制程序:

ProgressBar progressBar1 = new ProgressBar();
progressBar1.Size = new System.Drawing.Size(516, 23);
progressBar1.Location = new Point(10, 36);
groupBox4.Controls.Add(progressBar1);
现在,我需要知道如何替换控件的名称(progressBar1)和字符串变量的名称,这样我就可以使用for语句创建多个进度条 ?


任何idea?

您必须将代码放入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);
}

progressBar1不是控件的名称。ProgressBar类型变量的名称,该变量用于处理ProgressBar的当前实例

从控件派生的每个类都有一个名为字符串类型的属性

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); 
}

您可以毫无问题地将此代码放入循环中。您的代码正常工作:),只需放入循环即可使用var mynameplace=progressBar1;这将指向同一对象。我不知道如何使用已定义的字符串作为对象名。您不想在C#中执行宏替换,它不是为它设置的。我认为这回答了问题,因为您使用的是name属性。好的,这很好。现在我需要知道如何单独调用每个progressbar?哦,我现在明白了。这很简单。非常感谢你。你是最好的。我该如何调用所需的progressbar?你可以像使用数组一样使用字典的索引器,请参阅更新的答案。。。
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); 
}
ProgresBar pb = groubBox4.Controls["pgb1"] as ProgressBar;
pb.Increment(1);