C# c语言中的宏替换#
我正试图用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)
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);