トップ回答者
ユーザーコントロールのプロパティにコレクションを指定するには

質問
-
現在ユーザーコントロールを作成中で そのプロパティに初めて コレクションを使う事にしました 下記のように書いたのですが プログラムからこのプロパティの値を設定することはできるのですが デザイナーからは 値を設定するダイアログは出るのですが追加ボタンなどがグレー表示になって値を追加できません どこを変えれば良いんでしょうか
設定したい値は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
回答
-
因みに hashtableだと デザイナーからは設定できなくて 当たり前なんでしょうか?あまり詳しくありませんが、多分そういう事なんでしょう。
引数が一つのAdd() メソッドを持ったコレクションしか駄目だとかいう制限があるのかもしれません。Web サービスでコレクションを公開する時はこの制限があります。あと、単なる Hashtable だと何をインスタンス化してよいのかが分からない、というのもあります。例えば、ArrayList を同じ目的で使うと、「デザイナで追加」はできるようになります。これは恐らくAdd() メソッドの引数が一つだからでしょう。しかし、肝心の値を入れる事ができません。ArrayList は Object 型を受け入れる何でも屋なので、デザイナが何をインスタンス化してよいのかが分からないためです。
すべての返信
-
囚人 さんからの引用 Hashtable なのに、Interger を設定したいというのは変です。Hashtable に設定するのは、キーと値のペアです。
単に Integer のコレクションという意味なら、List(Of T) 型等を使い、T の型を Interger にしてみればデザイナからも設定可能です。
ちなみに、コレクションのプロパティを公開する時は、Set を定義しないのが作法です。
囚人さん ありがとうございます
そうです どちらかというと単に integerのコレクションです
一度、List(of T)を使ってみます
因みに hashtableだと デザイナーからは設定できなくて 当たり前なんでしょうか?
-
因みに hashtableだと デザイナーからは設定できなくて 当たり前なんでしょうか?あまり詳しくありませんが、多分そういう事なんでしょう。
引数が一つのAdd() メソッドを持ったコレクションしか駄目だとかいう制限があるのかもしれません。Web サービスでコレクションを公開する時はこの制限があります。あと、単なる Hashtable だと何をインスタンス化してよいのかが分からない、というのもあります。例えば、ArrayList を同じ目的で使うと、「デザイナで追加」はできるようになります。これは恐らくAdd() メソッドの引数が一つだからでしょう。しかし、肝心の値を入れる事ができません。ArrayList は Object 型を受け入れる何でも屋なので、デザイナが何をインスタンス化してよいのかが分からないためです。
-
囚人 さんからの引用 あまり詳しくありませんが、多分そういう事なんでしょう。
引数が一つのAdd() メソッドを持ったコレクションしか駄目だとかいう制限があるのかもしれません。Web サービスでコレクションを公開する時はこの制限があります。あと、単なる Hashtable だと何をインスタンス化してよいのかが分からない、というのもあります。例えば、ArrayList を同じ目的で使うと、「デザイナで追加」はできるようになります。これは恐らくAdd() メソッドの引数が一つだからでしょう。しかし、肝心の値を入れる事ができません。ArrayList は Object 型を受け入れる何でも屋なので、デザイナが何をインスタンス化してよいのかが分からないためです。
囚人さん ありがとうございます
なるほど そういうことですか
なんとか Generic.List(of T)で 対応できそうなので これでやってみます