none
ユーザーコントロールのプロパティにコレクションを指定するには RRS feed

  • 質問

  •  現在ユーザーコントロールを作成中で そのプロパティに初めて コレクションを使う事にしました 下記のように書いたのですが プログラムからこのプロパティの値を設定することはできるのですが デザイナーからは 値を設定するダイアログは出るのですが追加ボタンなどがグレー表示になって値を追加できません   どこを変えれば良いんでしょうか

    設定したい値はintegerです

    御教授願えないでしょうか?  

      Public pHedTXT As Hashtable

     _______________
        Public Property FullHedTxt() As Hashtable
            Get
                Return pHedTXT
            End Get
            Set(ByVal value As Hashtable)
                pHedTXT = value
            End Set
        End Property

     

    2006年10月10日 10:39

回答


  • 因みに hashtableだと デザイナーからは設定できなくて 当たり前なんでしょうか?

    あまり詳しくありませんが、多分そういう事なんでしょう。
    引数が一つのAdd() メソッドを持ったコレクションしか駄目だとかいう制限があるのかもしれません。Web サービスでコレクションを公開する時はこの制限があります。

    あと、単なる Hashtable だと何をインスタンス化してよいのかが分からない、というのもあります。例えば、ArrayList を同じ目的で使うと、「デザイナで追加」はできるようになります。これは恐らくAdd() メソッドの引数が一つだからでしょう。しかし、肝心の値を入れる事ができません。ArrayList は Object 型を受け入れる何でも屋なので、デザイナが何をインスタンス化してよいのかが分からないためです。

    2006年10月10日 14:32

すべての返信

  • Hashtable なのに、Interger を設定したいというのは変です。Hashtable に設定するのは、キーと値のペアです。

    単に Integer のコレクションという意味なら、List(Of T) 型等を使い、T の型を Interger にしてみればデザイナからも設定可能です。

    ちなみに、コレクションのプロパティを公開する時は、Set を定義しないのが作法です。

    2006年10月10日 13:17
  •  囚人 さんからの引用

    Hashtable なのに、Interger を設定したいというのは変です。Hashtable に設定するのは、キーと値のペアです。

    単に Integer のコレクションという意味なら、List(Of T) 型等を使い、T の型を Interger にしてみればデザイナからも設定可能です。

    ちなみに、コレクションのプロパティを公開する時は、Set を定義しないのが作法です。

    囚人さん ありがとうございます

    そうです どちらかというと単に integerのコレクションです

    一度、List(of T)を使ってみます

    因みに hashtableだと デザイナーからは設定できなくて 当たり前なんでしょうか?

     

    2006年10月10日 13:43

  • 因みに hashtableだと デザイナーからは設定できなくて 当たり前なんでしょうか?

    あまり詳しくありませんが、多分そういう事なんでしょう。
    引数が一つのAdd() メソッドを持ったコレクションしか駄目だとかいう制限があるのかもしれません。Web サービスでコレクションを公開する時はこの制限があります。

    あと、単なる Hashtable だと何をインスタンス化してよいのかが分からない、というのもあります。例えば、ArrayList を同じ目的で使うと、「デザイナで追加」はできるようになります。これは恐らくAdd() メソッドの引数が一つだからでしょう。しかし、肝心の値を入れる事ができません。ArrayList は Object 型を受け入れる何でも屋なので、デザイナが何をインスタンス化してよいのかが分からないためです。

    2006年10月10日 14:32
  •  囚人 さんからの引用

    あまり詳しくありませんが、多分そういう事なんでしょう。
    引数が一つのAdd() メソッドを持ったコレクションしか駄目だとかいう制限があるのかもしれません。Web サービスでコレクションを公開する時はこの制限があります。

    あと、単なる Hashtable だと何をインスタンス化してよいのかが分からない、というのもあります。例えば、ArrayList を同じ目的で使うと、「デザイナで追加」はできるようになります。これは恐らくAdd() メソッドの引数が一つだからでしょう。しかし、肝心の値を入れる事ができません。ArrayList は Object 型を受け入れる何でも屋なので、デザイナが何をインスタンス化してよいのかが分からないためです。

    囚人さん ありがとうございます

    なるほど そういうことですか

    なんとか Generic.List(of T)で 対応できそうなので これでやってみます

    2006年10月10日 22:50