求助,关于重写或添加控件的属性,并且能够在设计器里体现出来

老龙友 2011-10-18 10:13:36
我对控件的重写不是很熟悉,我现在想给control类增加一个属性,或者覆盖原有的属性,这个属性是我自己定义的一个类。而当我在设计器中添加一个控件时,我又想在设计器里看到这个属性,应该如何做?
...全文
180 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
老龙友 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bunliney 的回复:]

如果你想要在设计器里更改自定义类类型的属性,你需要为该属性添加一个设计器,否则只有默认类型才能在设计时更改
[/Quote]

你说的不对,我试过有两次增加了自定义属性以后(属性是一个类),设计器里会自动地出现针对该类的设计器,看起来VS的属性设计器是万能的,可以针对任何类进行编辑(当然最终都会变成对那些最底层类的编辑,例如INT,STRING等)

只是不知道为什么总是出现错误或者非法操作,设计器虽然很万能但并不是很稳定。最终放弃了这做法。
老龙友 2011-10-25
  • 打赏
  • 举报
回复
感谢楼上各位,看来只能用自定义控件了。
老龙友 2011-10-25
  • 打赏
  • 举报
回复
感谢楼上各位,看来只能用自定义控件了。
Bullatus 2011-10-21
  • 打赏
  • 举报
回复
如果你想要在设计器里更改自定义类类型的属性,你需要为该属性添加一个设计器,否则只有默认类型才能在设计时更改
jvvj 2011-10-20
  • 打赏
  • 举报
回复

Public Class CustomControl
Inherits System.Windows.Forms.Control
Private _MyProperty As ClassA
<System.ComponentModel.DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Content)> _
Public Property MyProperty() As ClassA
Get
Return _MyProperty
End Get
Set(ByVal value As ClassA)
_MyProperty = value
End Set
End Property

End Class


<System.ComponentModel.TypeConverterAttribute(GetType(System.ComponentModel.ExpandableObjectConverter))> _
Public Class ClassA
Private newPropertyValue As String
Public Property NewProperty() As String
Get
Return newPropertyValue
End Get
Set(ByVal value As String)
newPropertyValue = value
End Set
End Property

End Class
jvvj 2011-10-20
  • 打赏
  • 举报
回复
Public Class CustomControl
Inherits System.Windows.Forms.Control
Private _MyProperty As ClassA
<System.ComponentModel.DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Content)> _
Public Property MyProperty() As ClassA
Get
Return _MyProperty
End Get
Set(ByVal value As ClassA)
_MyProperty = value
End Set
End Property

End Class


<System.ComponentModel.TypeConverterAttribute(GetType(System.ComponentModel.ExpandableObjectConverter))> _
Public Class ClassA
Private newPropertyValue As String
Public Property NewProperty() As String
Get
Return newPropertyValue
End Get
Set(ByVal value As String)
newPropertyValue = value
End Set
End Property

End Class
积善成魔 2011-10-20
  • 打赏
  • 举报
回复
先写一个继承类
Public Class ExTextBox
Inherits TextBox

Private nShowText As Boolean

Public Property ShowText() As Boolean
Get
Return nShowText
End Get
Set(ByVal value As Boolean)
nShowText = value
If nShowText Then
MyBase.Text = "您好"
End If
End Set
End Property
End Class


然后编译一次

然后在窗口上放一个textbox

再到 InitializeComponent 函数中改写一下
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.TextBox1 = New ExTextBox ’这里改写 就可以了
兔子-顾问 2011-10-18
  • 打赏
  • 举报
回复
自定义类,继承自Control。拖自定义的控件出来用。你无法修改现有控件改继承你的控件。

16,717

社区成员

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

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