Как показать константу для свойства вместо значения - PullRequest
2 голосов
/ 14 декабря 2010

Здравствуйте, я работаю в VB.Net 2010 framework 2.0.Предположим, я объявляю свойство:

Dim NewColor As Color = Color.FromArgb(150, 145, 145)

Private _myColor As Color = NewColor 
Public Property MyColor() As Color
    Get
        Return _myColor
    End Get
    Set(ByVal value As Color)
        _myColor = value
    End Set
End Property

В конструкторе форм свойство "MyColor" будет отображаться со значением 150, 145, 145. Я хочу видеть это значение как "NewColor" в конструкторе форм,Это то же самое, что и цвета системы ControlDark, ActiveBorder и т. Д.Я хочу, чтобы вместо значения цвета дизайнер показывал имя переменной..Net Framework также использует вышеуказанную реализацию для системных цветов и то же, что я хочу сделать.

Спасибо за любой ответ заранее.

1 Ответ

0 голосов
/ 14 декабря 2010

Это возможно, но не просто.

Вы должны определить свой собственный тип, возможно, скрыть текущее свойство в браузере с атрибутом <Browsable(False)> и создать свойство shadow вашего собственного типа. Этот тип должен знать, когда он «указывает» на переменную или имеет сам цвет.

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

Вы можете создать раскрывающийся список, как в Color, с дополнительной вкладкой, в которой перечислены ваши переменные.

Если вы не хотите создавать дополнительные свойства (это плохая OO), вы также можете определить TypeConverter для класса и указать каждое свойство и как себя вести.

Кстати: структура Color хранит значение KnownColor (Color.Red или SystemColor.WindowText) или значения RGB. Таким образом, он знает, что он указывает на известный цвет. Ваша структура должна также знать, указывает ли она на переменную (и на какую переменную) или является System.Color.

...