自定义属性图片框控件

问题描述 投票:0回答:2

第一次尝试创建控件。 我有一个类,它继承了 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

如果我在将控件放在窗体上时在控件的属性网格中选择“分类”,我的属性将组合在一起。

enter image description here

但是,当我选择“按字母顺序排列”时,它们没有分组。

问题: 选择“按字母顺序排列”时如何将它们分组。就像 Location 在图片框控件上一样

enter image description here

vb.net custom-controls
2个回答
1
投票

那里没有分组。

Location
是一个属性,它按字母顺序显示在属性列表中,就像您的属性一样。
Location
属性是
Point
类型,您看到的
X
Y
具有该
Point
值的属性,而不是
PictureBox
的属性。如果你添加你自己的
Point
类型的属性,你会看到同样的东西。


0
投票

感谢对我的问题的评论。 找到附加的代码,我终于找到了搜索,这将允许我的自定义属性位于“按字母顺序排列”的布局下。感谢@jmcilhinney 的评论,解释了获取位置的“点”值。 这是到目前为止的属性照片(更多要添加) Custom Properties

这里是带有标签的 (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

谢谢大家!

© www.soinside.com 2019 - 2024. All rights reserved.