0

使用 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

任何帮助/想法将不胜感激。如果这没有/无法解决,我会将最有帮助的帖子标记为答案...

4

1 回答 1

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
于 2020-10-16T01:43:47.500 回答