Свойство текста в пользовательском элементе управления теряет значение - PullRequest
3 голосов
/ 26 мая 2011

Я создаю пользовательский элемент управления кнопками и испытываю некоторые трудности с моим свойством Text.Все, что я ввожу, остается только при открытом окне дизайнера форм.Когда я закрываю дизайнер форм и снова открываю его, мое свойство Text сбрасывается в «».Также, если я запускаю программу, она теряет значение, введенное во время разработки.

У меня также есть свойство Image для моего элемента управления, которое работает просто отлично.

Вот часть моего кода:

Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Windows.Forms
Imports System.ComponentModel

Public Class BlackButton

Private iText As String
Private iImage As Image

''' <summary>
''' Gets/Sets the text displayed in the button.
''' </summary>
<Browsable(True), Description("Gets or sets the text displayed on the button")> _
Public Shadows Property Text() As String
    Get
        Return iText
    End Get
    Set(ByVal value As String)
        iText = value
        ReDrawMe()
    End Set
End Property

''' <summary>
''' Gets/Sets the image to be displayed on the button
''' </summary>
<Browsable(True), Description("Gets or sets the image displayed on the button")> _
Public Shadows Property Image() As Image
    Get
        Return iImage
    End Get
    Set(ByVal value As Image)
        iImage = value
        ReDrawMe()
    End Set
End Property

Я тщательно прочесал свой код и убедился, что никуда его не сбрасываю.

Заранее благодарен за любую помощь в этом.

Ответы [ 2 ]

1 голос
/ 07 сентября 2011

Кажется, работает добавление свойства:

<Browsable(True), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
Public Overrides Property Text() As String
    Get
        Return MyBase.Text
    End Get
    Set(ByVal value As String)
        MyBase.Text = value
        LabInfo.Text = MyBase.Text
    End Set
End Property
1 голос
/ 26 мая 2011

Я однажды столкнулся с этой проблемой. Просто удалите ключевое слово Shadows. Я не знаю, может ли там работать Override, но если нет, просто проигнорируйте предупреждение VS о свойствах Text и Image.

РЕДАКТИРОВАТЬ: я не знаю, почему вам не удалось с ключевым словом Overrides. Только свойство Image заставило меня использовать Overloads. Вот мой код:

Imports System.ComponentModel

Public Class UserControl1

Dim _Text As String
Dim _Image As Image

<Browsable(True), Description("Gets or sets the text displayed on the button")> _
Overrides Property Text() As String
    Get
        Return _Text
    End Get
    Set(ByVal value As String)
        _Text = value
        'This line just for update
        'the UI when I design to check
        'if the values are saved.
        MyBase.Text = value
    End Set
End Property

<Browsable(True), Description("Gets or sets the image displayed on the button")> _
Overloads Property Image() As Image
    Get
        Return _Image
    End Get
    Set(ByVal value As Image)
        _Image = value
        'ReDrawMe()
    End Set
End Property

Конечный класс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...