Получение дескриптора элемента управления по его имени

#visual-studio-2008 #user-controls #c#-3.0 #handle

#visual-studio-2008 #пользовательские элементы управления #c #-3.0 #дескриптор

Вопрос:

У меня есть UserControl с несколькими графическими полями на нем. Это единственные элементы управления в UserControl. Все графические поля имеют имя ‘pbx’ плюс цвет, такой как ‘pbxGrey’ или ‘pbxBlack’. У меня есть метод, который выбирает одно из полей с картинками и изменяет стиль границы, чтобы показать, что оно было выбрано. Я пытался использовать это.Управляет методом [«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. Итак, что мне нужно знать, так это как вы получаете дескриптор элемента управления, чтобы я мог изменить стиль границ? Пожалуйста, ответьте на C # или, при необходимости, на VB. Спасибо.

Ответ №1:

Вам следует попробовать использовать оператор приведения:

Кроме того, вам не следует назначать 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)
{
     ...
}
  

Конечно, вы должны проверить, что элемент управления не равен null, прежде чем пытаться назначить или использовать и т.д.
Но вы поняли идею.

Комментарии:

1. Большое вам спасибо! Осваиваю новый язык и все еще пытаюсь выучить все входящие и исходящие. Очень признателен!