如何通过字符串访问Control变量?

时间:2014-09-29 05:33:04

标签: c# winforms dynamic-variables

我想使用字符串值 像这样

Random rnd = new Random();
int x= rnd.Next(1, 10);
string ime = "pictureBox" + x.ToString();
ime.BackColor = Color.CornflowerBlue;

但这不起作用

3 个答案:

答案 0 :(得分:2)

你真的不想使用这样的字符串。您希望获得具有该名称的控件并像这样使用它。您可以通过以下名称获得控件:

var pictureBox = myForm.Controls[ime];

答案 1 :(得分:1)

以下代码应该适合您,

Random rnd = new Random();
int x= rnd.Next(1, 10);
string ime = "pictureBox" + x.ToString();
((PictureBox)frm.Controls.Find(ime ,true)[0]).BackColor = Color.CornflowerBlue;

答案 2 :(得分:0)

不是生成随机名称而是使用它,而是找到具有该名称的PictureBox,直接选择一个随机的PictureBox:

Random rnd = new Random();
var pictureBoxes = frm.Controls.OfType<PictureBox>().ToArray();
var randomPictureBox = pictureBoxes[rnd.Next(pictureBoxes.Length)];

randomPictureBox.BackColor = Color.CornflowerBlue;