如果我在groupBox中移动文本框,如何更改c#.net中文本框的字体颜色? 它在没有组框时有效,但如果文本框在组框中,则字体颜色不会改变。
这是在进入组框之前工作的初始代码。
foreach (object t in this.Controls)
if (t.GetType() == typeof(TextBox))
((TextBox)t).BackColor = Color.AntiqueWhite;
答案 0 :(得分: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 );