2011-05-31 199 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