#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. Большое вам спасибо! Осваиваю новый язык и все еще пытаюсь выучить все входящие и исходящие. Очень признателен!