使用变量更改对象的 属性? C#/Visual Studio
Changing The Property Of An Object Using Variables? C#/Visual Studio
好的,我有 100 个按钮,我需要根据 while 循环中的条件更改颜色。它们被命名为 button1、button2、button3 等。在第一次循环(迭代?)期间,我需要编辑 button1,下一次编辑 button2,第三次编辑 button3,等等。
我想我可以做一个等于 "button" 的字符串,加上循环次数并改变颜色。
String ButtonNumber = "button" + i;
其中 i = 循环次数
当我尝试使用 ButtonNumber.BackColor = Color.Red;
编辑颜色时,它不允许我这样做,因为它没有像对待按钮那样对待 ButtonNumber,而是像对待字符串一样。我该如何做到这一点?谢谢! (这几乎是我第一次编程)
考虑使用 Controls.Find
按名称查找控件,然后您可以更改它的属性:
for (int i = 1; i <= 100; i++)
{
var buttonName = string.Format("button{0}", i);
var foundControl = Controls.Find(buttonName, true).FirstOrDefault();
if (foundControl != null)
{
// You can now set any common control property using the found control
foundControl.BackColor = Color.Red;
// If you need to set button-specific properties (i.e. properties
// that are not common to all controls), then cast it to a button:
var buttonControl = foundControl as Button;
if (buttonControl != null)
{
buttonControl.AutoEllipsis = true;
}
}
}
好的,我有 100 个按钮,我需要根据 while 循环中的条件更改颜色。它们被命名为 button1、button2、button3 等。在第一次循环(迭代?)期间,我需要编辑 button1,下一次编辑 button2,第三次编辑 button3,等等。
我想我可以做一个等于 "button" 的字符串,加上循环次数并改变颜色。
String ButtonNumber = "button" + i;
其中 i = 循环次数
当我尝试使用 ButtonNumber.BackColor = Color.Red;
编辑颜色时,它不允许我这样做,因为它没有像对待按钮那样对待 ButtonNumber,而是像对待字符串一样。我该如何做到这一点?谢谢! (这几乎是我第一次编程)
考虑使用 Controls.Find
按名称查找控件,然后您可以更改它的属性:
for (int i = 1; i <= 100; i++)
{
var buttonName = string.Format("button{0}", i);
var foundControl = Controls.Find(buttonName, true).FirstOrDefault();
if (foundControl != null)
{
// You can now set any common control property using the found control
foundControl.BackColor = Color.Red;
// If you need to set button-specific properties (i.e. properties
// that are not common to all controls), then cast it to a button:
var buttonControl = foundControl as Button;
if (buttonControl != null)
{
buttonControl.AutoEllipsis = true;
}
}
}