使用VB.net(2005),我正在创建一个包含文本框和按钮的自定义控件(文件夹选择器)。最近我添加了以下内容:
<Browsable(True), DefaultValue(""), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
Public Overrides Property Text() As String
Get
Return Me.uiPath.Text
End Get
Set(ByVal value As String)
Me.uiPath.Text = value
End Set
End Property
我遇到的问题是,现在创建控件时,文本框始终默认显示控件的名称(而不是空白)。在调用Sub New后,看起来Text属性正在被更改,但是,我已经检查了设计器,我无法看到它在哪里这样做。
我知道更改属性的名称可以解决问题,但我想知道为什么会发生这种情况(我猜这与标准设计师有关?),如果有办法解决(或解决)它,同时仍然使用Text属性?
我不知道它是否有任何区别,但我使用的是自定义设计师:
Public Class FolderPickerDesigner
Inherits Windows.Forms.Design.ControlDesigner
Public Overrides ReadOnly Property SnapLines() As IList
Get
Dim SnapLinesList As ArrayList = TryCast(MyBase.SnapLines, ArrayList)
If (Me.Control IsNot Nothing) AndAlso (Me.Control IsNot Nothing) Then
Dim FP As FolderPicker = CType(Me.Control, FolderPicker)
SnapLinesList.Add(New SnapLine(SnapLineType.Baseline, FP.uiPath.Bottom - 5, SnapLinePriority.Medium))
End If
Return SnapLinesList
End Get
End Property
End Class
任何帮助/想法将不胜感激。如果没有/无法解决,我会将最有用的帖子标记为答案......
答案 0 :(得分:0)
Set(ByVal value As String)
If Me.DesignMode And (Environment.StackTrace.Contains("System.Windows.Forms.Design.ControlDesigner.InitializeNewComponent")) Then Return
BaseT.Text = value
End Set