如果我在groupBox中移动文本框,如何更改c#.net中文本框的字体颜色?

时间:2015-01-06 14:11:00

标签: c# visual-studio-2013

如果我在groupBox中移动文本框,如何更改c#.net中文本框的字体颜色? 它在没有组框时有效,但如果文本框在组框中,则字体颜色不会改变。

这是在进入组框之前工作的初始代码。

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

1 个答案:

答案 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 );