Добавить пользовательское свойство в стандартный элемент управления - PullRequest
0 голосов
/ 15 февраля 2011

Будучи немного ленивым, я бы хотел добавить некоторые свои свойства в элемент управления, БЕЗ хлопот с созданием пользовательского элемента управления.

Скажем, есть элемент управления Button, я бы хотел добавитьвторичное свойство Tag к нему.

Или текстовое поле Я хочу для него свойство oldText ...

Мне не нужно, чтобы добавленные свойства отображались в окне свойств.Мне просто нужно использовать их в коде.

Есть идеи?

Пожалуйста, НЕ отвечайте, если говорите мне, что Я ДОЛЖЕН использовать пользовательский элемент управления или производный класс.Мне нужна простота использования стандартных элементов управления на панели инструментов.

С другой стороны, что-то вроде Partial Class подойдет ...

Ответы [ 3 ]

3 голосов
/ 15 февраля 2011

Для WPF

Расширение от кнопки и добавление желаемых свойств зависимостей . Вам не нужно создавать пользовательский элемент управления с нуля.

Вы также можете использовать прикрепленные свойства , чтобы добавить дополнительные функции без использования наследования.

Для винформ

Мои winform-формы немного ржавые, но я заметил, что вы также можете просто выйти из кнопки .

2 голосов
/ 15 февраля 2011

Если вы не хотите расширять класс и просто хотите сослаться на «свойства» в коде, вы можете рассмотреть создание Dictionary<T, V>, где T - это тип элемента управления, а V - этовведите вы хотите сопоставить с контролем.Это может быть строка или пользовательский тип, если требуется, чтобы несколько свойств были сопоставлены одному и тому же элементу управления.

Возможно, у вас есть

class CustomPropertyBag
{
    public string OldText { get; set; }
    public string Tag { get; set; }
    // more
}

В вашем коде может быть Dictionary<TextBox, CustomPropertyBag> dictionary, что позволит вам сопоставить ваши пользовательские свойства и текстовые поля вместе.

1 голос
/ 15 февраля 2011

Я думаю, что ваш лучший ответ - тот, который, по моему мнению, вы не позволяете нам дать - то есть использовать наследование для создания унаследованного элемента управления.

Однако вы можете выполнить работу- с использованием реализации IExtenderProvider.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...