代码之家  ›  专栏  ›  技术社区  ›  Tom

C#无法在Windows窗体中循环访问控件集合并设置用户控件的属性

  •  0
  • Tom  · 技术社区  · 7 年前

    这里是一个典型的命令来改变滑块上的按钮。

    colorSlider1.ThumbInnerColor = Color.FromArgb(99, 130, 208);
    

            foreach (Panel pnl in backPanel.Controls)
            {
                foreach (Control c in pnl.Controls)
                {
                    if (c is Button)
                    {
                        c.ForeColor = Color.Black;
                    }
                }
            }
    

    这个很好用。但是,如果我尝试这个:

            foreach (Panel pnl in backPanel.Controls)
            {
                foreach (Control c in pnl.Controls)
                {
                    if (c is ColorSlider.ColorSlider)
                    {
                        c.ThumbInnerColor = Color.FromArgb(99, 130, 208);
                    }
                }
            }
    

    在这种情况下,visualstudio会给出一个语法错误

    错误CS1061“Control”不包含“ThumbInnerColor”的定义,并且找不到接受“Control”类型的第一个参数的可访问扩展方法“ThumbInnerColor”(是否缺少using指令或程序集引用?)

    有人知道怎么解决这个问题吗?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Paweł Audionysos    7 年前

    或者是在新的C#

    foreach (Panel pnl in backPanel.Controls)
    {
        foreach (Control c in pnl.Controls)
        {
            if (c is ColorSlider.ColorSlider s)
            {
                s.ThumbInnerColor = Color.FromArgb(99, 130, 208);
            }
        }
    }
    
        2
  •  2
  •   Heriberto Lugo Felipe Oriani    7 年前

    “innerA color”的定义不包含“thumb控件” 不包含该属性。 现在看看你的代码:

    c.ThumbInnerColor = Color.FromArgb(99, 130, 208);
    

    您正在尝试将属性设置为 哪种类型 ..

    控制 颜色滑块

    foreach (Panel pnl in backPanel.Controls)
        {
            foreach (Control c in pnl.Controls)
            {
                ColorSlider.ColorSlider slider = c as ColorSlider.ColorSlider;
                if (slider != null)
                {
                    slider.ThumbInnerColor = Color.FromArgb(99, 130, 208);
                }
            }
        }
    

    foreach (Panel pnl in backPanel.Controls)
        {
            foreach (Control c in pnl.Controls)
            {
                if (c is ColorSlider.ColorSlider)
                {
                    (c as ColorSlider.ColorSlider).ThumbInnerColor = Color.FromArgb(99, 130, 208);
                }
            }
        }
    

    foreach (Panel pnl in backPanel.Controls)
        {
            foreach (Control c in pnl.Controls)
            {
                if (c is ColorSlider.ColorSlider)
                {
                    ((ColorSlider.ColorSlider)c).ThumbInnerColor = Color.FromArgb(99, 130, 208);
                }
            }
        }
    
        3
  •  2
  •   Idle_Mind    7 年前

            foreach(Panel pnl in backPanel.Controls.OfType<Panel>())
            {
                foreach(ColorSlider cs in pnl.Controls.OfType<ColorSlider>())
                {
                    cs.ThumbInnerColor = Color.FromArgb(99, 130, 208);
                }
            }
    
    推荐文章