2014-09-29 4 views
0

나는이문자열로 Control 변수에 액세스하는 방법은 무엇입니까?

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

같은 문자열 값 을 사용하고 싶지만 당신이 나던 작업

+2

물론 '문자열'은 'PictureBox'가 아니기 때문에 'BackColor'속성이 존재하지 않습니다. –

+0

아니요, 변수 _에 의해 _ 액세스 할 필요가 없습니다 _. ** 배열이 필요합니다 **. – Krumia

+0

http://stackoverflow.com/questions/18434263/c-sharp-use-a-string-to-call-a-variable, http://stackoverflow.com/questions/20857773/create-dynamic-variable-name http://stackoverflow.com/questions/23699542/how-can-i-access-to-all-comboboxes-by-for-loop-in-c, http://stackoverflow.com/questions/4483912/find -a-control-in-c-sharp-winforms-by-name – user2864740

답변

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

정말이 같은 문자열을 사용하지. 그 이름으로 컨트롤을 가져 와서 이것을 이렇게 사용하고 싶습니다.

var pictureBox = myForm.Controls[ime]; 
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;