C# 使用面板中的控件,仅编辑picturebox控件

C# 使用面板中的控件,仅编辑picturebox控件,c#,controls,C#,Controls,panel1有多个图片框和标签 我想做一个按钮,只改变picturebox控件的样式 private void button8_Click(object sender, EventArgs e) { int cnt = 0; foreach (PictureBox pb in panel1.Controls) { if (pb is Pictu

panel1有多个图片框和标签

我想做一个按钮,只改变picturebox控件的样式

 private void button8_Click(object sender, EventArgs e)
        {
            int cnt = 0;
            foreach (PictureBox pb in panel1.Controls)
            {                
                if (pb is PictureBox)
                {
                    cnt++;
                    //do stuff
                    excludelist1.Add(pb.Name);
                    //clickedPictureBox.Hide();                        
                    pb.BorderStyle = BorderStyle.FixedSingle;
                    pb.Tag = Color.Blue;
                }
            }
            label1.Text = "Exclusded Count = " + cnt;    
        }
//上面的代码给出了“无法从面板强制转换标签”错误。
请告诉我如何修复此问题?

您的面板包含多种
控件类型,而不仅仅是
图片盒。按如下方式更改循环:

foreach (var pb in panel1.Controls.OfType<PictureBox>())
{
   cnt++;
   //do stuff 
   excludelist1.Add(pb.Name); 
   //clickedPictureBox.Hide(); 
   pb.BorderStyle = BorderStyle.FixedSingle;
   pb.Tag = Color.Blue;
}

这里是类型
方法的文档链接-我发现该解决方案更优雅一些,但两种方法都有效-

您的面板包含多个
控件类型,而不仅仅是
图片框。按如下方式更改循环:

foreach (var pb in panel1.Controls.OfType<PictureBox>())
{
   cnt++;
   //do stuff 
   excludelist1.Add(pb.Name); 
   //clickedPictureBox.Hide(); 
   pb.BorderStyle = BorderStyle.FixedSingle;
   pb.Tag = Color.Blue;
}
这里有一个链接,指向OfType
方法的
文档-我发现这个解决方案有点优雅,但两种方法都有效-