2010-12-14 3 views
2

Привет Я работаю в 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 и т. Д. Я хочу, чтобы вместо значения цвета дизайнер должен показать имя переменной. . Framework .Net также использует описанную выше реализацию для системных цветов и то же самое, что я хочу сделать.

Благодарим за любой ответ заранее.

ответ

0

Это возможно, но не легко.

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

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

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

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

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

+0

Можете ли вы предоставить любой образец? – Amol

+0

Не думайте о коротких 10 строчных исправлениях для этого. В MSDN есть примеры. Для редактора: http://msdn.microsoft.com/en-us/library/53c49eck.aspx, для TypeConverter: http://msdn.microsoft.com/en-us/library/ayybcxe5.aspx – GvS

+0

Спасибо за ответ , Решение, о котором вы говорите, является ответом. еще раз спасибо – Amol

Смежные вопросы