ページ 1 / 1
visual basicのループ文
Posted: 2016年3月30日(水) 12:42
by sakana
Lavelのループの質問をさせていただきます。
以下にプログラムの一部抜粋を記載いたします。
コード:
Private Sub LabelReset()
Label7.ResetText()
Label8.ResetText()
Label9.ResetText()
Label10.ResetText()
Label11.ResetText()
Label12.ResetText()
Label13.ResetText()
End Sub
この文をfor文でまとめたいのですが、いろいろと試したのですがうまく機能しません。
環境はVusual Stdio Express 2015 for Windows Desktopです。
Re: visual basicのループ文
Posted: 2016年3月30日(水) 13:25
by みけCAT
sakana さんが書きました:Lavelのループの質問をさせていただきます。
Lavelとは何ですか?Labelのtypoですか?
sakana さんが書きました:この文をfor文でまとめたいのですが、いろいろと試したのですがうまく機能しません。
意味がわかりません。
- 何をしたくて
- どうなってほしいのに
- 実際はどうなってしまう
のかを具体的に書いてください。
Re: visual basicのループ文
Posted: 2016年3月30日(水) 16:39
by sakana
わかりづらくて申し訳ありません。
Lavelとは何ですか?Labelのtypoですか?
Labelのスペルミスです。
・何をしたくて
コード:
For i As Integer = 7 To 13
Controls("Label" & i).Text = ""
Next
みたいにfor文を使って小さくまとめたいです。
Re: visual basicのループ文
Posted: 2016年3月30日(水) 21:40
by YuO
- コントロールを配列化しておく
ループをしたいのだから,配列やリストにしてしまえば普通にループが使えます。
コード:
Private _labels As Label()
のようなフィールドを用意し,
コンストラクタでInitializeComponentが呼び出された後に,
コード:
_labels = New Label () { Label7, Label8, Label9, Label10, Label11, Label12, Label13 }
のようにして代入する。利用するときにはコード:
For Each l In _labels
l.ResetText()
Next
のようにループさせる
- Control.Controlsコレクションを使う
ControlにあるControlsコレクションは,全ての子Controlが含まれ,ControlのNameで探すことができます。
コード:
For i = 7 To 13
DirectCast(Controls($"Label{i}"), Label).ResetText()
Next
のようにループさせる。Form直下(正確には同一コントロール直下)にある場合のみ有効
型安全の関係上,前者を推奨します。
Re: visual basicのループ文
Posted: 2016年3月31日(木) 16:12
by sakana
返信ありがとうございます。
解決いたしました