如何获取splitContainer.Panel2下的所有按钮和标签



我想获得splitContainer.Panel2下所有按钮和标签的背景色。当我尝试时,我发现我无法在任何控制下运行(在面板2下)我尝试这个代码:

foreach (Control c in ((Control)splitContainer.Panel2).Controls)
{
    if ((c is Button) || (c is Label))
        MessageBox.Show("Name: " + c.Name + "  Back Color: " + c.BackColor);
}

如何获取splitContainer.Panel2下所有标签和按钮的所有背景色?

编辑:

  1. 我在splitcontainer中有一些面板。Panel2,按钮和标签在面板中
  2. 我只收到这样的信息:"名称:panel_Right Back颜色:彩色[透明]"

您收到消息可能是因为您的splitContainer.Panel2下有一个面板,应该执行以下操作:

foreach (Control c in ((Control)splitContainer.Panel2).Controls)
{
    if(c is Panel)
    {
      foreach (Control curr in c.Controls)
      {
         MessageBox.Show("Name: " + curr.Name + "  Back Color: " + curr.BackColor);
      }
    }
}

您可以在没有LINQ的情况下执行此操作,但我想在此处使用LINQ

public IEnumerable<Control> GetControls(Control c){            
  return new []{c}.Concat(c.Controls.OfType<Control>()
                                    .SelectMany(x => GetControls(x)));
}    
foreach(Control c in GetControls(splitContainer.Panel2).Where(x=>x is Label || x is Button))
   MessageBox.Show("Name: " + c.Name + "  Back Color: " + c.BackColor);

您还应该为ButtonLabel添加一个检查。在messagebox:之前添加此行

if ((c is Button) || (c is Label))

相关内容

  • 没有找到相关文章

最新更新