请教,关于自定义控件的属性的设置问题

va702b 2011-11-23 03:20:31
在vs中,自定义控件,新加的属性在设计器里都会放在属性栏目的杂项中,有没有什么办法让他不出现在杂项分类中而出现在其它的分类中?


还有,如果在设计器中拖用新建的这个控件的话,他的所有的属性都会出现在设计InitializeComponent方法中,有没有什么办法,让这些属性不显示呢? 很多控件的属性如果不修改默认值的,是不会出现在InitializeComponent方法中的


...全文
81 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmhcs 2011-11-24
  • 打赏
  • 举报
回复
经过测试,通过默认值设定,就可以不在initializeComponent出现
见代码
Private Sub InitializeComponent()
Me.CustomControl11 = New WindowsApplication1.CustomControl1
Me.SuspendLayout()
'
'CustomControl11
'
Me.CustomControl11.Age = 0
Me.CustomControl11.Caption = Nothing
Me.CustomControl11.Location = New System.Drawing.Point(40, 42)
Me.CustomControl11.Name = "CustomControl11"
Me.CustomControl11.Size = New System.Drawing.Size(178, 122)
Me.CustomControl11.TabIndex = 0
Me.CustomControl11.Text = "CustomControl11"

这是设定默认值后
'CustomControl11
'
Me.CustomControl11.Location = New System.Drawing.Point(38, 74)
Me.CustomControl11.Name = "CustomControl11"
Me.CustomControl11.Size = New System.Drawing.Size(137, 73)
Me.CustomControl11.TabIndex = 0
Me.CustomControl11.Text = "CustomControl11"

类代码
Public Class CustomControl1

Private mCaption As String = "first"
Private mAge As Integer = 7

<Category("我的分类"), DefaultValue("myname"), Description("设置标题")> _
Property Caption() As String
Get
Return mCaption
End Get
Set(ByVal value As String)
mCaption = value
End Set
End Property
<Category("我的分类"), DefaultValue(10), Description("设置年龄")> _
Property Age() As Integer
Get
Return mAge
End Get
Set(ByVal value As Integer)
mAge = value
End Set
End Property
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)

'在此处添加自定义绘制代码
End Sub

End Class
lmhcs 2011-11-24
  • 打赏
  • 举报
回复
这不是很理解你的说法,你的意思是在你制作的这个控件添加别的控件,还是在窗体添加你现在制作的控件?InitializeComponent方法是初始化的方法,这个貌似我们不用去管它吧?至少我没有去理它。另外,你的很多控件的属性如果不修改默认值的,是不会出现在InitializeComponent方法中的这个我倒没有测试过,但我想应该是默认值的问题。如果设定好默认值,就应该不会出现InitializeComponent方法。回家我做个试验看看,然后在回你。
va702b 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lmhcs 的回复:]
这个容易,在类上面添加Imports System.ComponentModel 引用
然后在属性上添加<Category("我的分类")> 属性

如下面

VB.NET code
''' <summary>
''' '设置边框颜色
''' </summary>
''' <value></value>
''' <returns></re……
[/Quote]

第二个问题呢?
va702b 2011-11-24
  • 打赏
  • 举报
回复
谢谢谢谢,非常感谢!
lmhcs 2011-11-23
  • 打赏
  • 举报
回复
这个容易,在类上面添加Imports System.ComponentModel 引用
然后在属性上添加<Category("我的分类")> 属性

如下面
    ''' <summary>
''' '设置边框颜色
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
<Category("我的分类")> Property BorderColor() As Color
Get
Return mborderColor
End Get
Set(ByVal value As Color)
mborderColor = value
Me.Invalidate()
End Set
End Property

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧