我正在使用C#。我想使用字符串变量作为组合框名称。
假设我有3个名为box1
,box2
和box3
的组合框。现在我想更改这些组合框的一些属性。
我可以写:
box1.SomeProperty = SomeValue1;
box2.SomeProperty = SomeValue2;
box3.SomeProperty = SomeValue3;
但我希望在for
或while
循环中执行此操作。像:
string[] names = new string[3] {"box1","box2","box3"};
int[] values= new int[3] {4,5,6};
for (int i = 0; i <= names.Length; i++)
{
?names[i]?.SomeProperty = values[i];
}
?name[i]?
被names
变量中的字符串替换。
这是我的第一篇文章。请原谅错误。
答案 0 :(得分:3)
如果您有一组控件,您知道自己想要更新,只需创建一个集合:
var comboBoxes = new List<ComboBox> { box1, box2, box3 };
foreach (var cb in comboBoxes)
{
cb.SomeProperty = SomeValue1;
}
如果您真的想使用名称,可以在当前Form的控件集合中搜索它们(假设这是WinForms ...您没有指定):
var comboBoxes = new List<string> { "box1", "box2", "box3" };
foreach (var cb in comboBoxes)
{
var box = (ComboBox)this.Controls.Find(cb, true).FirstOrDefault();
if (box != null)
box.SomeProperty = SomeValue1;
}
如果要在当前表单上修改所有 ComboBox控件(再次假设WinForms),可以将LINQ&#39; OfType<>()
方法与Controls集合结合使用:
foreach (var cb in this.Controls.OfType<ComboBox>())
{
cb.SomeProperty = SomeValue1;
}
答案 1 :(得分:0)
我认为它不会像你期望的那样有效..
我会建立一个ComboBox控件列表,然后迭代这个对象列表以应用属性更改。
如果您的表单上有三个ComboBox,名为box1,box2,box3 ...那么您应该能够执行以下操作:
List<ComboBox> boxes = new List<ComboBox>();
boxes = {box1, box2, box3}.ToList;
int[] values = {4, 5, 6};
for (i = 0; i <= boxes.Count - 1; i++) {
boxes(i).SomeProperty = values(i);
}
答案 2 :(得分:0)
如果您的控件位于表单上,并且您的代码也在同一表单上运行,则使用键通过表单控件集合访问控件。关键是控件名称。
this.Controls[names[i]].SomeProperty = values[i];