Создание пользовательского элемента управления ... Не удается создать свойство 'text'? - PullRequest
1 голос
/ 23 апреля 2009

Решение

Я немного погуглил и нашел это сообщение на форуме , и вот что мне нужно было сделать:

Imports System.ComponentModel

<EditorBrowsable(EditorBrowsableState.Always), Browsable(True), Bindable(True), _
DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
Overrides Property Text() As String
    Get
        Return ControlText.Text
    End Get
    Set(ByVal value As String)
        ControlText.Text = value
    End Set
End Property

Я должен заявить, что я действительно новичок в создании пользовательских элементов управления, поэтому я не знаю всех входов и выходов всего процесса.

Я создаю пользовательский элемент управления, который работает аналогично флажку, но использует два изображения как отмеченные / не отмеченные. Я пытаюсь добавить свойство Text, но оно выдает мне следующее предупреждение:

Property Text() As String
    Get
        Return ControlText.Text
    End Get
    Set(ByVal value As String)
        ControlText.Text = value
    End Set
End Property

"свойство 'Text' скрывает переопределяемый метод в базовом классе 'UserControl'. Чтобы переопределить базовый метод, этот метод должен быть объявлен как 'Overrides'."

Хорошо, так что это не проблема. Я изменяю свою декларацию на Overrides Property Text() As String, но когда я иду проверить ее, «текст» не отображается в свойствах. Есть ли дополнительные шаги, которые мне нужно предпринять, чтобы получить мой результат?

Подробнее

Мой элемент управления состоит из 2 (или 3, в зависимости от того, как вы на это смотрите):

  1. PictureBox - отображает отмеченное / непроверенное изображение
  2. Метка - текст, отображаемый на элементе управления
  3. PictureCheckBox - это фактическое имя элемента управления

PictureBox закреплен слева от PictureCheckBox, а метка закреплена справа:

alt text

Ответы [ 4 ]

3 голосов
/ 23 апреля 2009

РЕДАКТИРОВАТЬ Поцарапан бит о том, что текст не виртуальный. Это на самом деле виртуальный / переопределенный.

Но мне любопытно, почему ты хочешь это сделать. В вашем конкретном примере вы просто вызываете свойство base, чтобы оно ничего не делало.

Где вы ожидаете, что это значение будет показано и как вы его устанавливаете?

Текст - это не виртуальный / переопределяемый метод в Control. Вы не можете переопределить свойство. Если вы хотите переопределить свойство, вы можете использовать ключевое слово Shadows.

1 голос
/ 23 апреля 2009

Это может быть глупый вопрос, но некоторые из них все еще нужно задать, чтобы убедиться:

Вы скомпилировали с момента внесения изменений? Используя горячие клавиши в Visual Studio, нажмите [Ctrl]+[Shift]+[b], чтобы скомпилировать все решение.

1 голос
/ 23 апреля 2009

Public Overridable Текст свойства () в виде строки

Get
    Return ControlText.Text
End Get
Set(ByVal value As String)
    ControlText.Text = value
End Set End Property
1 голос
/ 23 апреля 2009

Вы должны убедиться, что это публичная собственность

...