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

本文关键字:文本 net 字体 颜色 移动 如果 | 更新日期: 2023-09-27 18:36:21

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

这是在进入分组框之前有效的初始代码。

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

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

当你循环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 );