VB.NETでFor~Next+Indexの様な動作をするには?

解決


ashigiku  2006-01-29 06:12:05  No: 129925

VB.NETでIndexプロパティが無くなってしまったので困惑しています。
例えば、10個のテキストボックスの値を全て足すといった場合に
VB6で

for i=0 to 9
sum = sum + int(form1.txtNum(i).text)
next

という感じで実現されてたプログラムを
VB.NETではどのようにすればいいのでしょうか。


アクア  2006-01-30 00:54:30  No: 129926

私はVB経験半年でしかも趣味で始めたので至らぬところもありますが、
協力させていただきたいと思います。
VB.NETで反復処理をさせたい場合、
controlクラスのcontrolcollectionを使って反復処理をした方が良いと思います。

Dim Sum As Int32 = 0

For Each ctrTextbox As Control In Me.Controls
    If TypeOf (ctrTextbox) Is System.Windows.Forms.TextBox Then
        Sum = Sum + Convert.ToInt32(ctrTextbox.Text)
    End If
Next

Label1.Text = Sum

これでコントロール配列と同様の反復処理ができると思います。
TextBoxの値が数値以外の場合の例外処理はお任せします。
私はVB.NETを初めてまだ間もないので、回答側も初心者です。
的をえた回答になっているかわかりませんがOKならお知らせください。


ashigiku  2006-01-30 04:30:11  No: 129927

アクアさんのヒントを元に
Handles,Controls,TypeOf,DirectCast
といったキーワードを使い、
Indexの代用をつくることに成功しました。
丁寧な回答、ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加