Свойство .Net Inherited Control Default - PullRequest
0 голосов
/ 16 марта 2010

Я пытаюсь сделать простой элемент управления "ButtonPlus". основная идея заключается в наследовании от элемента управления кнопки и добавлении некоторых значений свойств по умолчанию (таких как шрифт, цвет, отступы ...)

Как бы я ни пытался, WinForm всегда генерирует (или «сериализует») значение свойства в клиентских формах

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

Я хочу, чтобы дизайнер форм не генерировал какой-либо код для этих свойств и мог управлять ими из кода ButtonPlus. Другими словами, если я изменю ForeColor с красного на синий, в приложении должна измениться только одна строка кода.

вот мой код. как вы можете видеть, я пытался использовать defaultvalue, reset, shouldserialize .... все, что мне удалось найти в Интернете!

Public Class ButtonPlus</p> <pre><code>Inherits Button Sub New() AutoSizeMode = Windows.Forms.AutoSizeMode.GrowAndShrink Font = New System.Drawing.Font("Arial", 11.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(177, Byte)) Padding = New System.Windows.Forms.Padding(3) Anchor = AnchorStyles.Left + AnchorStyles.Right + AnchorStyles.Top ForeColor = Color.Aqua End Sub <DefaultValue(True)> _ Public Overrides Property AutoSize() As Boolean Get Return MyBase.AutoSize End Get Set(ByVal value As Boolean) MyBase.AutoSize = value End Set End Property Public Function ShouldSerializeAutoSize() As Boolean Return False ' Not AutoSize = True End Function Public Function ShouldSerializeForeColor() As Boolean Return False 'Not ForeColor = Color.Aqua End Function Public Overrides Sub ResetForeColor() ForeColor = Color.Aqua End Sub

Конечный класс

Большое спасибо, что нашли время, чтобы посмотреть на это и ответить всего наилучшего

1 Ответ

0 голосов
/ 16 марта 2010

Звучит так, как будто вы хотите создавать темы для WinForms, что, к сожалению, сейчас не является встроенным. Однако есть некоторые сторонние реализации.

Ознакомьтесь с классом ThemeManager в Проект Genghis , чтобы дать вам основу для выполнения этого в очень высоком или более детальном масштабе. Тем не менее, он обеспечивает то, что вы просите.

...