1

解决方案

我做了一些谷歌搜索并找到了这个论坛帖子,这就是我需要做的:

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

“属性‘文本’在基类‘UserControl’中隐藏了一个可重写的方法。要重写基方法,该方法必须声明为‘Overrides’。”

好的,所以这没问题。我将声明更改为Overrides Property Text() As String,但是当我去测试它时,“文本”未在属性下列出。我需要采取其他步骤来获得结果吗?

更多细节

我的控件由 2 个(或 3 个,取决于您如何看待它)组成:

  1. PictureBox - 显示选中/未选中的图像
  2. 标签 - 控件上显示的文本
  3. PictureCheckBox - 这是实际控件的名称

PictureBox 停靠在 PictureCheckBox 的左侧,Label 停靠在右侧:

替代文字

4

4 回答 4

3

编辑关于 Text 是非虚拟的。它实际上是虚拟的/可覆盖的。

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

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

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

于 2009-04-23T18:35:15.287 回答
1

你应该确保它是公共财产

于 2009-04-23T18:35:39.983 回答
1

公共可重写属性 Text() As String

Get
    Return ControlText.Text
End Get
Set(ByVal value As String)
    ControlText.Text = value
End Set End Property
于 2009-04-23T18:39:21.627 回答
1

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

自从您进行更改后,您是否编译过?使用 Visual Studio 中的热键,按下[Ctrl]+[Shift]+[b]以编译整个解决方案。

于 2009-04-23T18:56:23.567 回答