none
VB2008のユーザーコントロールのプロパティがデザイナーで表示されない RRS feed

  • 質問

  • VB2008でユーザーコントロールを作成したのですが、新しく作成したプロパティがデザイナで表示されません。

    コードでの設定は可能ですので、デザイナーでの設定だと思いますがご存じの方は教えてください。

    以下にコードを示します。

    Imports System.ComponentModel

    Public Class OrderPrice
        Private strText As String
        Private intCount As Integer
        Private intPrice As Integer  '***************************************************************************************************************
        '   TEXT プロパティ
     '***************************************************************************************************************
        <DefaultValue(True)> _
        Public Overloads Property Text() As String
            Get
                Return strText
            End Get

            Set(ByVal value As String)
                gbCondition.Text = value
            End Set
        End Property  '***************************************************************************************************************
        '   数量 プロパティ
     '***************************************************************************************************************
        Public Property Count() As Integer
            Get
                intCount = Integer.Parse(txtCount.Text, Globalization.NumberStyles.AllowThousands)
                Return intCount
            End Get
            Set(ByVal value As Integer)
                txtCount.Text = value.ToString
            End Set
        End Property

    '***************************************************************************************************************
        '   価格 プロパティ
        '***************************************************************************************************************
        Public Property Price() As Integer
            Get
                intPrice = Integer.Parse(txtPrice.Text, Globalization.NumberStyles.AllowThousands)
                Return intPrice
            End Get
            Set(ByVal value As Integer)
                txtPrice.Text = value.ToString("#,#")
            End Set
        End Property

        '***************************************************************************************************************
    '***************************************************************************************************************
        Private Sub rbOrder_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbOrder.CheckedChanged
            If rbOrder.Checked Then
                lblPrice.Enabled = True
                txtPrice.Enabled = True
            End If
        End Sub

     '***************************************************************************************************************
      '***************************************************************************************************************
        Private Sub rbMarket_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rbMarket.CheckedChanged
            lblPrice.Enabled = False
            txtPrice.Enabled = False
        End Sub
    End Class

    2010年7月3日 17:14

回答

  • なお、デザイナーで表示されないプロパティはオーバーライドしているTextとそうでない
    Count、Priceも表示されません。

    今は、どこでプロパティを表示していますか?

    作った OrderPrice のデザイナでは追加したプロパティは表示されません。
    作ったプロパティが表示されるのは、OrderPrice を配置したフォームまたはユーザコントロールです。

    その他の可能性としては、プロパティを追加したアセンブリが正しく参照されていないか、ビルドが成功していない可能性ですが、こちらはお作りのプロジェクト構成などに依存しますので、今の時点では何とも言いかねます。
    前述の OrderPrice 自体を開いているのでない場合、OrderPrice はどういったプロジェクトに存在し、その OrderPrice を使うプロジェクトは同じプロジェクトか、違うプロジェクトであればどのように参照しているかも明記してください。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク tk_rodan 2010年7月4日 11:21
    2010年7月4日 9:10
    モデレータ

すべての返信

  • 何が表示されないのかは書いておいた方が良いでしょう。認識を合わせるためです。
    以下は、Text プロパティが表示されなくて困っているという前提で書きます。

    Text プロパティは UserControl クラスで以下の属性が付与されています。

    [Bindable(false)]
    [EditorBrowsable(EditorBrowsableState.Never)]
    [Browsable(false)]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

    プロパティでの表示を制御するのが Browsable 属性、エディタでの IntelliSense での表示を制御するのが EditorBrowsable 属性、デザイナでのプロパティ設定結果を保存するかなどを制御するのが DesignerSerializationVisibility 属性です。
    それぞれの属性についてヘルプを読んで頂いて、オーバーライドした Text プロパティで属性を再設定してやれば良いでしょう。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2010年7月4日 1:31
    モデレータ
  • 早速のご回答ありがとうございます。

    ご指摘の属性を調べて下記のようにコードを追加しましたが同じ結果でした。

    なお、デザイナーで表示されないプロパティはオーバーライドしているTextとそうでない

    Count、Priceも表示されません。

    まだ、何か追加する必要があるのでしょうか?

        <Browsable(True)> _
         Public Property Count() As Integer

    2010年7月4日 7:10
  • なお、デザイナーで表示されないプロパティはオーバーライドしているTextとそうでない
    Count、Priceも表示されません。

    今は、どこでプロパティを表示していますか?

    作った OrderPrice のデザイナでは追加したプロパティは表示されません。
    作ったプロパティが表示されるのは、OrderPrice を配置したフォームまたはユーザコントロールです。

    その他の可能性としては、プロパティを追加したアセンブリが正しく参照されていないか、ビルドが成功していない可能性ですが、こちらはお作りのプロジェクト構成などに依存しますので、今の時点では何とも言いかねます。
    前述の OrderPrice 自体を開いているのでない場合、OrderPrice はどういったプロジェクトに存在し、その OrderPrice を使うプロジェクトは同じプロジェクトか、違うプロジェクトであればどのように参照しているかも明記してください。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク tk_rodan 2010年7月4日 11:21
    2010年7月4日 9:10
    モデレータ
  • 確かにご指摘の通りです。

    今までは作った OrderPrice のデザイナで見ていました。

    OrderPrice をフォームに配置して確認したら表示されました。

    どうもありがとうございました。

    また、何かありましたらお願いします。

    2010年7月4日 11:25