2015-01-06 2 views
1

groupBox에서 텍스트 상자를 움직이면 C# .net에서 텍스트 상자의 글꼴 색을 변경하는 방법은 무엇입니까? 그룹 상자가 없을 때 작동하지만 텍스트 상자가 그룹 상자에 있으면 글꼴 색상이 변경되지 않습니다.groupBox에서 텍스트 상자를 이동하면 C# .net에서 텍스트 상자의 글꼴 색을 변경하는 방법은 무엇입니까?

이것은 그룹 박스에 들어가기 전에 작동 한 초기 코드입니다.

foreach (object t in this.Controls) 
    if (t.GetType() == typeof(TextBox)) 
     ((TextBox)t).BackColor = Color.AntiqueWhite; 
+0

다른 컨트롤 컨테이너 ('GroupBox.Controls') 안에'TextBox'를 찾으려면 재귀를 사용해야합니다. – Sinatr

답변

2

this.Controls에 당신 루프가 방금 컨트롤의 수준을 받고있어, 즉, (나는 것으로 가정 할 것) 양식의 직접 자녀 컨트롤.

시도 :

foreach (object t in groupBox1.Controls) 
     if (t.GetType() == typeof(TextBox)) 
      ((TextBox)t).BackColor = Color.AntiqueWhite; 

당신이 전체 양식의 모든 텍스트 상자를 찾을 필요하면 전체 제어 트리를 통해 갈 수있는 재귀 함수 쓰기 :

private void ForAll<T>(Control c, Action<T> func) where T : Control 
{ 
    if(c is T) 
     func((T)c); 
    foreach(Control child in c.Controls) 
     ForAll(child, func); 
} 

과 같이 사용

ForAll<TextBox>(this, c => c.BackColor = Color.AntiqueWhite); 
+0

네 말이 맞아! 고마워요! –

+0

흥미 롭습니다! 도와 주셔서 다시 한 번 감사드립니다! –

관련 문제