创建自定义控件...无法创建“文本”属性?

时间:2009-04-23 18:33:12

标签: vb.net visual-studio-2008 custom-controls

解决方案

我做了一些谷歌搜索和found this forum post,这就是我需要做的事情:

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
  

“property'Text'在基类'UserControl'中隐藏一个可覆盖的方法。要覆盖基本方法,必须将此方法声明为'Overrides'。”

好的,这没问题。我将我的声明更改为Overrides Property Text() As String,但当我去测试时,'text'未在属性下列出。我需要采取额外的步骤来获得结果吗?

更多详情

我的控件包含2个(或3个,取决于你如何看待它):

  1. PictureBox - 显示已选中/未选中的图像
  2. 标签 - 控件上显示的文本
  3. PictureCheckBox - 这是实际控件的名称
  4. PictureBox停靠在PictureCheckBox的左侧,标签停靠在右侧:

    alt text

4 个答案:

答案 0 :(得分:3)

编辑划伤了有关非虚拟文字的内容。它实际上是虚拟/可覆盖的。

但我很好奇,你为什么要这样做。在您的具体示例中,您只是调用基本属性,因此它似乎没有做任何事情。

您希望在哪里显示此值以及如何设置它?

<击> Text是Control上的非虚拟/可覆盖方法。您无法覆盖该属性。如果要重新定义属性,可以使用Shadows关键字。

答案 1 :(得分:1)

你应该确保它是一个公共财产

答案 2 :(得分:1)

  

Public Overridable 属性Text()As String

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

答案 3 :(得分:1)

这可能是一个愚蠢的问题,但其中一些仍然需要确认:

您是否已经编译,因为您进行了更改?在Visual Studio中使用热键,按[Ctrl]+[Shift]+[b]以编译整个解决方案。