以名称获取控制手柄

| 我有一个带有几个PictureBox的UserControl。这些是UserControl上的唯一控件。所有PictureBox都被命名为\'pbx \',再加上一种颜色,例如\'pbxGrey \'或\'pbxBlack \'。我有一个方法可以选择PictureBoxes之一并更改BorderStyle以表示它已被选中。我尝试使用this.Controls [\“ pbx \” + color]方法,但是没有用于设置BorderStyle的属性。
    public void SelectColor(string color)
    {
        ClearBorderSyles();
        this.Controls[\"pbx\" + color]. //No BorderStyle property
        SelectedColor = color;
    }
我也尝试过这样做以获得相同的属性:
    public void SelectColor(string color)
    {
        ClearBorderSyles();
        Picturebox handle = new PictureBox();
        handle = this.Controls[\"pbx\" + color];
        SelectedColor = color;
    }
在此示例中,VS说我不能将控件隐式转换为PictureBox。因此,我需要知道的是如何获得控件的句柄,以便可以更改BorderStyle?请以C#或必要时以VB回答。谢谢。     
已邀请:
        您应该尝试使用强制转换运算符: 另外,如果您打算在下一行扔掉新对象,则不应为其分配“ 2”新对象: 我建议类似的东西:
if(this.Controls[\"pbx\" + color] is PictureBox)
{
   PictureBox handle = this.Controls[\"pbx\" + color] as PictureBox;
}
要么:
using(PictureBox handle = this.Controls[\"pbx\" + color] as PictureBox)
{
     ...
}
当然,在尝试分配或使用控件之前,应检查控件是否为null。 但是你明白了。     

要回复问题请先登录注册