如何解决以名称获取控制手柄
| 我有一个带有几个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。
但是你明白了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。