C#:使用字符串值作为对象引用的名称
此刻,我有多个文本块,我想根据字符串的名称进行访问。请看下面的例子:C#:使用字符串值作为对象引用的名称
TextBlock test1 = new TextBlock();
TextBlock test2 = new TextBlock();
TextBlock test3 = new TextBlock();
TextBlock test4 = new TextBlock();
public static void changeValues()
{
string name = "test";
for (int i = 1; i < 5; i++)
{
[name + i].Text = "Wow";
}
}
正如你所看到的,我试图访问文本1,文本2,等我这样做的原因是因为“名”的值可以随时更改,所以我可以重新使用这段代码。我也可以使“i < 5”成为“i <数字”并且该方法将int作为参数之一。当然问题是这不会真正起作用。我需要字符串名称作为名称给出的TextBlock的引用。任何帮助表示赞赏!
@PetSerAl是说:
var yourBlocks = new TextBlock[]
{
new TextBlock(),
new TextBlock(),
new TextBlock(),
new TextBlock()
};
foreach (var block in yourBlocks)
{
block.Text = "Wow";
}
这个工作到底如何? – Saghen
在'new TextBlock []'上放置一个断点并在调试器中执行。关于使用XAML中定义的文本块的编辑,将XAML中定义的名称放在'new TextBlock [] {...}'中,而不是创建新的名称。 –
如何解释?
Dictionary<string, string> myDictionary=
new Dictionary<string, TextBlock>();
myDictionary.Add("name1", mytextBlock1);
myDictionary.Add("name2", mytextBlock2);
myDictionary["name1"] = new TextBlock();
var tBlock = myDictionary["name2"];
这不是基于名称创建文本块。这不是我想要做的。 – Saghen
为什么不使用数组来代替? – PetSerAl
数组为什么,为什么? – Saghen
你有没有问题'[name + i] .Text =“哇”'?如果是这样,你不应该这样访问控制。相反,试试吧, this.Controls [name + i] .Text =“哇”; – Bharathi