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

私はカスタムコントロールの作成に本当に慣れていないので、プロセス全体の詳細をすべて把握しているわけではありません。

チェックボックスと同様に機能するカスタムコントロールを作成していますが、2つの画像をオン/オフとして使用しています。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たが、テストしようとすると、「テキスト」がプロパティの下に表示されません。結果を得るために必要な追加の手順はありますか?

詳細

私のコントロールは2つ(またはあなたの見方によっては3つ)で構成されています:

  1. PictureBox-チェックされている/チェックされていない画像を表示します
  2. ラベル-コントロールに表示されているテキスト
  3. PictureCheckBox-これは実際のコントロールの名前です

PictureBoxはPictureCheckBoxの左側にドッキングされ、ラベルは右側にドッキングされます。

代替テキスト

4

4 に答える 4

3

編集テキストが非仮想であるということについて少し傷をつけました。実際には仮想/オーバーライド可能です。

しかし、私は興味があります、なぜあなたはこれをしたいのですか。特定の例では、baseプロパティを呼び出しているだけなので、何も実行されていないように見えます。

この値がどこに表示されることを期待し、どのように設定していますか?

テキストは、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 に答える