第一次尝试创建控件。 我有一个类,它继承了 PictureBox
这里有一些自定义属性
'Properties
<Category("Boarder"), Description("Border Size")>
Public Property BorderSize As Integer
Get
Return borderSizeField
End Get
Set(ByVal value As Integer)
borderSizeField = value
Invalidate()
End Set
End Property
<Category("Boarder"), Description("Border Color")>
Public Property BorderColor As Color
Get
Return borderColorField
End Get
Set(ByVal value As Color)
borderColorField = value
Invalidate()
End Set
End Property
<Category("Boarder"), Description("Border Color2")>
Public Property BorderColor2 As Color
Get
Return borderColor2Field
End Get
Set(ByVal value As Color)
borderColor2Field = value
Invalidate()
End Set
End Property
如果我在将控件放在窗体上时在控件的属性网格中选择“分类”,我的属性将组合在一起。
但是,当我选择“按字母顺序排列”时,它们没有分组。
问题: 选择“按字母顺序排列”时如何将它们分组。就像 Location 在图片框控件上一样
那里没有分组。
Location
是一个属性,它按字母顺序显示在属性列表中,就像您的属性一样。 Location
属性是 Point
类型,您看到的 X
和 Y
具有该 Point
值的属性,而不是 PictureBox
的属性。如果你添加你自己的Point
类型的属性,你会看到同样的东西。
感谢对我的问题的评论。 找到附加的代码,我终于找到了搜索,这将允许我的自定义属性位于“按字母顺序排列”的布局下。感谢@jmcilhinney 的评论,解释了获取位置的“点”值。 这是到目前为止的属性照片(更多要添加)
这里是带有标签的 (2) 类的代码片段,以及属性窗口的“描述”等。
Public Class NewPictureBox
Inherits PictureBox
Public Sub New()
Size = New Size(100, 100)
SizeMode = PictureBoxSizeMode.Zoom
Me.m_properties = New TextLocation(Me)
Me.m_captiontext = New TextLocation(Me)
Me.m_captionx = New TextLocation(Me)
Me.m_captiony = New TextLocation(Me)
'Me.m_stateReadOnly = New TextLocation(Me)
Me.m_picturebox = New TextLocation(Me)
'Borders Fields
Me.m_borderSizeField = New TextLocation(Me)
Me.m_borderColorField = New TextLocation(Me)
Me.m_borderColor2Field = New TextLocation(Me)
Me.m_borderLineStyleField = New TextLocation(Me)
Me.m_borderCapStyleField = New TextLocation(Me)
Me.m_gradientAngleField = New TextLocation(Me)
End Sub
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
Public ReadOnly Property Properties() As TextLocation
Get
Return Me.m_properties
End Get
End Property
第 2 类的一部分
<ToolboxItem(False)>
Public Class TextLocation
Inherits Component
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)>
<Category("Properties"),
DisplayName("Caption"),
DescriptionAttribute("Enter text for Caption"),
ParenthesizePropertyName(False),
XmlElementAttribute("Caption"),
EditorBrowsable(EditorBrowsableState.Always),
RefreshProperties(RefreshProperties.All)>
Public Property Caption As String
Get
Return m_captiontext
End Get
Set(ByVal Value As String)
m_captiontext = Value
End Set
End Property
谢谢大家!