tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルUserControlでのプロパティの設定の仕方
記事No964
投稿日: 2004/07/09(Fri) 09:44
投稿者ATTU
[OSのVer]:WindowsXP Pro    [VBのVer]:VB.NET2002

  いつも参考にさせていただいています。
    自分も早くレス付けられるようになるたいです。

UserControlを作成(基底クラスはUserControl)しているのですがプロパティの設定でこまっていま
す。
ListBoxのItemsのようなプロパティを指定したいのですができません、どなたか教えてください!

よろしくお願いします。

[ツリー表示へ]
タイトルRe: UserControlでのプロパティの設定の仕方
記事No966
投稿日: 2004/07/09(Fri) 15:45
投稿者ファリンファリン
[OSのVer]:Windows    [VBのVer]:VB.NET  
> [OSのVer]:WindowsXP Pro    [VBのVer]:VB.NET2002
> UserControlを作成(基底クラスはUserControl)しているのですがプロパティの設定でこまっていま
> す。
> ListBoxのItemsのようなプロパティを指定したいのですができません、どなたか教えてください!

こんな感じでどうでしょうか?以下のコードをUserControlに埋め込んで見てください。

    'ここはクラス定数宣言域で
    Private m_objItems As System.Windows.Forms.ListBox.ObjectCollection = _
                    New System.Windows.Forms.ListBox.ObjectCollection(New
System.Windows.Forms.ListBox())

  'これがプロパティの記述
    Public Property Items() As System.Windows.Forms.ListBox.ObjectCollection
        Get
            Return m_objItems
        End Get
        Set(ByVal Value As System.Windows.Forms.ListBox.ObjectCollection)
            m_objItems = Value
        End Set
    End Property

[ツリー表示へ]
タイトルRe^2: UserControlでのプロパティの設定の仕方
記事No970
投稿日: 2004/07/11(Sun) 18:28
投稿者ATTU
>     Private m_objItems As System.Windows.Forms.ListBox.ObjectCollection = _
>                     New System.Windows.Forms.ListBox.ObjectCollection(New
> System.Windows.Forms.ListBox())
>
>     Public Property Items() As System.Windows.Forms.ListBox.ObjectCollection
>         Get
>             Return m_objItems
>         End Get
>         Set(ByVal Value As System.Windows.Forms.ListBox.ObjectCollection)
>             m_objItems = Value
>         End Set
>     End Property
ファリンファリンさんレスありがとうございます。

早速試してみたのですが"Object コレクション エディタ"までは表示されたのですが設定の
変更が出来
ません。何か指定・設定で注意するところがあるのでしょうか!

前回の質問が抽象的でしたのでもう一度質問します。
今作成しようとしているUserControlはExcelの機能の簡単なものを作成しようとしています。
で、列のタイプ(ラベル・数字・文字・CheckBoxなど)・列幅・桁数・少数点以下数・BackColor・
ForeColor を個々に設定しようとしています。
列の最高数は固定にしているのですが、自分が思いつく設定の方法はListBoxのItemsのようなプロパテ
ィの設定しか思いつかないのですが・・・

自分なりには色々と調べたり、試したのですが・・・

    Private myItems As XXXX
    Public Property Items() As XXXX
        Get
            Return myItems
        End Get
        Set(ByVal Value As XXXX)
            myItems = Value
        End Set
    End Property

どうしてもXXXXの所何にして良いのかがわかりません。
ご教授ください。

[ツリー表示へ]
タイトルRe^3: UserControlでのプロパティの設定の仕方
記事No972
投稿日: 2004/07/12(Mon) 16:00
投稿者ファリンファリン
> 早速試してみたのですが"Object コレクション エディタ"までは表示されたのですが設
定の
> 変更が出来
> ません。何か指定・設定で注意するところがあるのでしょうか!

『設定の変更が出来ない』とは何の設定の変更ですか?
ご紹介した例は、まさにItems()の実装です。
ちなみに As XXXX はそういうクラスなので前回回答いたしましたままです。

> 今作成しようとしているUserControlはExcelの機能の簡単なものを作成しようとしています。
> で、列のタイプ(ラベル・数字・文字・CheckBoxなど)・列幅・桁数・少数点以下数・BackColor・
> ForeColor を個々に設定しようとしています。

となりますと、話は違いますね。
推測するに、複数のプロパティを用意するのは美しくないので、何かまとまった形でのインターフェー
スを実現
されたいと言う事で宜しいでしょうか?(つまり、Item()の実装ではない?)
であるならば、構造体等を定義して外向き(Public)にプロパティを作成してあげればよいのでは?
これまた、抽象的な回答で申し訳ありません。
また、わたしの回答が的を外してるようであれば詳しく御教えください。

[ツリー表示へ]
タイトルRe^4: UserControlでのプロパティの設定の仕方
記事No983
投稿日: 2004/07/15(Thu) 11:24
投稿者ATTU
ファリンファリンさん返答ありがとうございます。

> 『設定の変更が出来ない』とは何の設定の変更ですか?
デザインのプロパティでの設定ができないのです。

> ちなみに As XXXX はそういうクラスなので前回回答いたしましたままです。

> 推測するに、複数のプロパティを用意するのは美しくないので、何かまとまった形での
> インターフェースを実現
> されたいと言う事で宜しいでしょうか?(つまり、Item()の実装ではない?)

市販のGridみたいなプロパティの実装は難しそうなので、単純にデザインのプロパティの設定で
┌──────────────────────────────┐
│タイプ,列幅,桁数,少数点数,(A,R,G,B),(A,R,G,B)               │
│タイプ,列幅,桁数,少数点数,(A,R,G,B),(A,R,G,B)               │
│             〃                                             │
│             〃                                             │
│             〃                                             │
│             〃                                             │
│             〃                                             │
│             〃                                             │
│                                                            │
│                                                            │
│                                                            │
└──────────────────────────────┘
上記のような設定が出来ればかまわないのですが・・・


> 構造体等を定義して外向き(Public)にプロパティを作成してあげればよいのでは?

    Public Structure m_Items
        Public myItem1 As String
        Public myItem2 As String
        Public myItem3 As String
    End Structure
    Public myItems As New m_Items()

    Property Items() As m_Items
        Get
            Return myItems
        End Get
        Set(ByVal Value As m_Items)
            myItems = Value
        End Set
    End Property
と書いてもデザインのプロパティ画面では薄くなって設定できません。

構造体等を定義して外向きとはどの様に書けばよいのでしょうか?

VBを理解せずに作成しているのでポイントをはずしているかもしれませんが
よろしくお願いします。

[ツリー表示へ]
タイトルRe^5: UserControlでのプロパティの設定の仕方
記事No984
投稿日: 2004/07/15(Thu) 15:51
投稿者ファリンファリン
[OSのVer]:Windows    [VBのVer]:VB.NET  
> デザインのプロパティでの設定ができないのです。
デザイン時のプロパティですか・・・
それは無理ですね(この方法は)
できれば、質問される際はなるたけ最初に詳しくご説明御願いします。
貴方様以外、私を含めてココを訪れた方々は仕様が判りませんので。。。^^;
それはさておき、
> ┌──────────────────────────────┐
> │タイプ,列幅,桁数,少数点数,(A,R,G,B),(A,R,G,B)            │
> │タイプ,列幅,桁数,少数点数,(A,R,G,B),(A,R,G,B)            │
> │             〃                                         │
> └──────────────────────────────┘
> 上記のような設定が出来ればかまわないのですが・・・
と、言う事ですよね?
正直私もいい方法と言うのが見つかりません。
なのでこういうのはどうでしょう?
上記のような設定をひとつの文字列(string型など)として
設定できるようにし、UserControl内のプロパティ記述をされてる
個所に、その文字列を分割及び各コントロールに設定するような
メソッドを呼ぶ記述をする
もちろんその呼ばれる側のメソッドも作成しなければなりません。

具体的にはこうです。
'UserControlのプロパティ
'(グリッドの設定を文字列プロパティを仮に『GridValue』とする)
        Public Property GridValue() As String
            Get
        'グリッドの設定を文字列連結メソッド
                Return Me.GetMixString()
            End Get
            Set(ByVal Value As String)
        'グリッドの設定を文字列分割メソッド
                Me.CutSetString(Value)
            End Set
        End Property

'UserControlのメソッド
    'カットして各コントロールに設定します
        Private Sub CutSetString(ByVal strData As String)
        '設定したいコントロールにそれぞれ分割した値をセットする記述
        controlA.val = strData.SubString(0,2) とか
        controlB.val = strData.SubString(2,4) とか.....
        End Sub

    '各コントロールから設定値を取得し文字列連結します
        Private Function GetMixString() As String
            Return "連結文字列(例えば、0,300,4,2,(ff,ff,ff,ff),(cc,ff,00,aa))"
        End Function

このようにUserControlを使うクラス側で簡単に設定させたいので在れば、
UserControl側で少々手をかけなければなりませんねw

[ツリー表示へ]