visual basicのループ文

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sakana

visual basicのループ文

#1

投稿記事 by sakana » 9年前

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です。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: visual basicのループ文

#2

投稿記事 by みけCAT » 9年前

sakana さんが書きました:Lavelのループの質問をさせていただきます。
Lavelとは何ですか?Labelのtypoですか?
sakana さんが書きました:この文をfor文でまとめたいのですが、いろいろと試したのですがうまく機能しません。
意味がわかりません。
  • 何をしたくて
  • どうなってほしいのに
  • 実際はどうなってしまう
のかを具体的に書いてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

sakana

Re: visual basicのループ文

#3

投稿記事 by sakana » 9年前

わかりづらくて申し訳ありません。

Lavelとは何ですか?Labelのtypoですか?
Labelのスペルミスです。

・何をしたくて

コード:

For i As Integer = 7 To 13
Controls("Label" & i).Text = ""
Next
みたいにfor文を使って小さくまとめたいです。

YuO
記事: 947
登録日時: 14年前
住所: 東京都世田谷区

Re: visual basicのループ文

#4

投稿記事 by YuO » 9年前

  • コントロールを配列化しておく
    ループをしたいのだから,配列やリストにしてしまえば普通にループが使えます。

    コード:

    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直下(正確には同一コントロール直下)にある場合のみ有効
型安全の関係上,前者を推奨します。

sakana

Re: visual basicのループ文

#5

投稿記事 by sakana » 9年前

返信ありがとうございます。
解決いたしました

閉鎖

“C言語何でも質問掲示板” へ戻る