tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルComboBoxの初期セット
記事No6383
投稿日: 2007/10/01(Mon) 17:28
投稿者びぎ
先日は、ありがとうございました。

ComboBoxの初期セット方法を教えて下さい。

下記はForm上の全てのComboBoxを
Indexが0番目を表示するようにしようとしている
コードです。

初期セットはTextBoxであればTextプロパティに空白をセットしますが
ComboBoxの初期セットは0番目を表示したいと思います。

Private Sub sClearControl(ByVal pControl As Control)
        Dim vComboBox As ComboBox
        '***
        For Each cldControl As Control In pControl.Controls
            If pControl.HasChildren = True Then
                sClearControl(cldControl)
            End If
        
            Select Case True
                 Case TypeOf cldControl Is ComboBox
                    '*** ComboBox ***
                    vComboBox = DirectCast(cldControl, ComboBox)

                     vComboBox.SelectedIndex = 0
            End Select
        Next
    End Sub

しかし、0のInvalidArgument = Value はSelectIndexに対して有効ではありません。

のエラーになってしまいます。

個別に

    ComboBox1.SelectedIndex = 0
  ComboBox2.SelectedIndex = 0
  ComboBox3.SelectedIndex = 0
はできるのですが..

ComboBoxの初期セット方法(0番目を表示)は、たくさんあるプロパティの
何にセットするのでしょうか?

[ツリー表示へ]
タイトルRe: ComboBoxの初期セット
記事No6384
投稿日: 2007/10/02(Tue) 14:00
投稿者大吉末吉
> 下記はForm上の全てのComboBoxを
> Indexが0番目を表示するようにしようとしている

> しかし、0のInvalidArgument = Value はSelectIndexに対して有効ではありません。
>
> のエラーになってしまいます。

試して見ましたが、エラーにはなりませんね。(VB2005)


ちなみに、Itemが設定されていない(Index=0がない)ComboBoxでは、
当然、上記のエラーになりますけど・・・

> 個別に
>     ComboBox1.SelectedIndex = 0
>   ComboBox2.SelectedIndex = 0
>   ComboBox3.SelectedIndex = 0
> はできるのですが..

どこかに(Itemが無い)ComboBoxがあるのでは・・・

[ツリー表示へ]
タイトルRe: ComboBoxの初期セット
記事No6385
投稿日: 2007/10/02(Tue) 15:15
投稿者y4yama
>         '***
>         For Each cldControl As Control In pControl.Controls
>             If pControl.HasChildren = True Then
1.       ^^^^^^^pControlは、おかしいような・・
>                 sClearControl(cldControl)
>             End If
>          
>             Select Case True <<<True? こんな使い方は?(あるの?)
>                  Case TypeOf cldControl Is ComboBox

エラーではないでしょうが、上の2点は、おかしいような・・

vComboBox.SelectedIndex = 0 で、私もうまく動きましたが・・・VB2005

参考になれば幸いです

[ツリー表示へ]
タイトルRe^2: ComboBoxの初期セット
記事No6386
投稿日: 2007/10/02(Tue) 17:15
投稿者大吉末吉

> >         For Each cldControl As Control In pControl.Controls
> >             If pControl.HasChildren = True Then
> 1.       ^^^^^^^pControlは、おかしいような・・

これは多分「cldContro」の間違いでしょうね・・・
コンテナが階層構造になっていた場合、再帰処理を行いたいのでしょう。

> >             Select Case True <<<True? こんな使い方は?(あるの?)
> >                  Case TypeOf cldControl Is ComboBox
>

テクニックとしてはありますね・・・
#個人的にはやりませんが。

「Select Case」の条件で固定値「True」が指定されていますので、
「Case文の式の内「True」になる物」がHITします。

例えば、「cldControl」がComboBoxなら、

Select Case True
Case True ' TypeOf cldControl Is ComboBox
End Select

として動作し、「cldControl」がComboBoxで無いなら、

Select Case True
Case False ' TypeOf cldControl Is ComboBox
End Select

として動作することになります。

[ツリー表示へ]