- PR -

GroupBox内の順序について

1
投稿者投稿内容
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2006-03-29 14:45
さかもとと申します。
VS2005(VB)
WINフォーム
にて開発をしています。

GroupBox内に配置されたコントロール各種を
表示順(画面の上から)にリストにセットし
て行きたいと考えており

例)GroupBox1内に
 1番目→テキストボックス
 2番目→コンボボックス
 ・
 ・
 ・
 n番目→○×コントロール
 
と配置しています

コード:
Private _Items As New List(Of String)

Do While i < GroupBox1.Controls.Count

            If gpb.Controls(i).GetType().ToString = "System.Windows.Forms.TextBox"  Then
                '_Itemsに追加
            End If

            If gpb.Controls(i).GetType().ToString = "System.Windows.Forms.ComboBox" Then
                cmb = CType(gpb.Controls(i), ComboBox)
                '_Itemsに追加
            End If
            
            ・
            ・
            ・
            
            i = i + 1
        Loop



とし、順序良く取得していこうとしたところ、
GroupBox1.Controls(0).GetType()→"System.Windows.Forms.ComboBox"
GroupBox1.Controls(1).GetType()→"System.Windows.Forms.Label"
GroupBox1.Controls(2).GetType()→"System.Windows.Forms.MaskedTextBox"


と最初にComboBoxコントロールを取得してしまいます。
コントロールの文字列を昇順で取得しているように見える
のですが、例でいうとtextboxコントロールを取得したいと
考えています。

何かよい方法をご存知の方がいらっしゃればご教授頂ければ
と思います。

宜しくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-29 15:01
引用:

さかもとさんの書き込み (2006-03-29 14:45) より:

GroupBox1.Controls(0).GetType()


普通は TypeOf を使ってコンパイル解決を図ります。
最近くどいように言っていますが、その書き方は型の検証ではなりません。
文字列の検証に他なりません。

引用:

最初にComboBoxコントロールを取得してしまいます。
コントロールの文字列を昇順で取得しているように見えるのですが、


いいえ、いわゆる ZOrder 順に取得されるハズです。
通常の場合、これはコントロールのメンバが定義されている順番どおりです。

引用:

例でいうとtextboxコントロールを取得したいと考えています。


これは、For Each を使うべきですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-29 15:02
引用:

さかもとさんの書き込み (2006-03-29 14:45) より:

例でいうとtextboxコントロールを取得したいと考えています。
何かよい方法をご存知の方がいらっしゃればご教授頂ければと思います。


自分でも忘れていたのですが、以下がそのままの Tips ですね。

  フォーム内のすべてのテキストボックスをクリアする

ClearTextBox([ここに GroupBox のインスタンス])

です。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2006-03-29 15:15
じゃんぬねっと様

すいません、本日2度目のお礼です。
ありがとうございました。

>最近くどいように言っていますが、その書き方は型の検証ではなりません。

この方法以前どこかで参考にさせて頂いてから使用して
いるので違和感なく使ってはいたのですが、ご指摘頂くと確かに
おっしゃる通りだと思います。

早速、TIPSを参考にさせて頂きます。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)