我有一个带有几个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表示我无法 implcitly 将Control转换为PictureBox。所以我需要知道的是如何处理控件以便我可以更改BorderStyle?请在C#中回答,或在必要时在VB中回答。谢谢。
答案 0 :(得分:0)
您应该尝试使用强制转换运算符:
此外,如果您计划将新对象丢弃到下一行,则不应为handle
分配新对象:
我会建议像:
if(this.Controls["pbx" + color] is PictureBox)
{
PictureBox handle = this.Controls["pbx" + color] as PictureBox;
}
或:
using(PictureBox handle = this.Controls["pbx" + color] as PictureBox)
{
...
}
当然,在尝试分配或使用之前,您应该检查控件是否为空。 但是你明白了。