Это код моего унаследованного элемента управления Button:
Public Class ButtonRefreshSmall
Inherits Button
Public Sub New()
MyBase.New
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Me.SuspendLayout()
Me.Text = ""
MyBase.Text = ""
Me.ResumeLayout()
End Sub
End Class
Однако, когда я перестраиваю и перетаскиваю эту кнопку в форму, текст всегда ButtonRefreshSmall1
. Я пробовал варианты без объявления Inherits
(поскольку он уже находится в файле .Designer.vb
, я попытался установить Text
в режиме конструктора / классе элемента управления, но безрезультатно.
Иногда он даже не отображается в панели инструментов после перестройки.
Все, что я хочу, это чтобы текст кнопки был пустым (поскольку в конструкторе определен Image
).
Это то, что у меня есть в файле Designer:
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.SuspendLayout()
'
'ButtonRefreshSmall
'
Me.BackColor = System.Drawing.Color.Transparent
Me.FlatAppearance.BorderSize = 0
Me.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Image = Global.TraxCashFlow.My.Resources.Resources.Refresh_grey_16x
Me.Size = New System.Drawing.Size(23, 23)
Me.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText
Me.UseVisualStyleBackColor = False
'MyBase.Text = ""
Me.ResumeLayout(False)
End Sub
И все остальные свойства установлены так, как я их установил. Я пытался обмануть его с помощью TextImageRelation
, но буква «В» всегда видна.
Обновление: Джими дал мне идею в комментарии под своим ответом, поэтому я добавил новый Property
MyText
, и это работает точно так же, как я хочу (хотя я не уверен, почему мне нужно звонить Refresh
, если я не обновляется после потери фокуса):
Imports System.ComponentModel
Public Class ButtonRefreshSmall
Public Property MyText As String
Get
Return Me.Text
End Get
Set(value As String)
Me.Text = value
Me.Refresh()
End Set
End Property
Public Sub New()
'MyBase.New
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
'Me.Text = ""
End Sub
<Browsable(False)>
<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>
Public Overrides Property Text As String
End Class
Обновление № 2, см. Ответ @ TnTinMn.