2011-05-31 162 views
0

我有一个用户控件,上面有几个PictureBox。这些是UserControl上的唯一控件。所有的PictureBox都被命名为'pbx'加上'pbxGrey'或'pbxBlack'等颜色。我有一种方法可以选择其中一个PictureBox并更改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控件转换为一个图片。所以我需要知道的是如何获得控件的句柄,以便我可以更改BorderStyle?请在C#中回答,如有必要请在VB中回答。谢谢。

回答

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) 
{ 
    ... 
} 

当然,您应该在尝试分配或使用之前检查控件是否为空,等等。 但您明白了。

+0

非常感谢!采用新的语言,并仍在努力学习所有的进出。非常感激! – Muckdog12 2011-05-31 21:33:01