C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ループでの処理


(過去ログ 144 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■84277 / inTopicNo.1)  ループでの処理
  
□投稿者/ lop (1回)-(2017/06/08(Thu) 12:14:12)

分類:[.NET 全般] 

ご質問です

現在、作成中のシステムでわからないことが・・・


@同じ処理をLabel別でしたいが、11のLabelに対し同じ処理を書く必要があるのか?

Private Sub tanaire_output()

Dim read() As String = System.IO.File.ReadAllLines(output_t, myenco)

If read(0) = "@処理してください" Then
Lamp1.ForeColor = Color.Red

End If

サブプロシージャーで Lamp1〜Lamp11まで
文字色を変えるだけなのですが

read部分が @A〜変わり
Aの場合は Lamp2.ForeColor = Color.Red 変えたいです

この場合 Lamp(i)にしてLoop文にすればわざわざ書かなくていいと思い

Label宣言 New とやりましたができません

なにかいい方法ないですか?
よろしくお願い致します

引用返信 編集キー/
■84278 / inTopicNo.2)  Re[1]: ループでの処理
□投稿者/ 魔界の仮面弁士 (1315回)-(2017/06/08(Thu) 12:34:14)
No84277 (lop さん) に返信
> @同じ処理をLabel別でしたいが、11のLabelに対し同じ処理を書く必要があるのか?

あらかじめ、Form の Load イベントなどで

 Private Lamps() As Label
 Private Sub Form1_Load(……
   Lamps = New Label() { Lamp1, Lamp2, Lamp3, … }
 End Sub

などのように、配列に保存しておくと、利用する際に

 For Each lbl In Lamps
  lbl.ForeColor = Color.Red
 Next

あるいは

 For i = 0 To Lamps.GetUpperBound()
  Lamps(i).ForeColor = Color.Red
 Next

などとループ処理できます。


> If read(0) = "@処理してください" Then
>   Lamp1.ForeColor = Color.Red

文字列との紐付けが必要ならば、たとえば
 Private hash As New Dictionary(Of String, Label)()
 Private Sub Form1_Load(……
   hash.Add("@処理してください", Lamp1)
   hash.Add("A処理してください", Lamp2)
   hash.Add("B処理してください", Lamp3)
     :
 End Sub
のようにしておいて、
  For Each line In read
   If hash.ContainsKey(line) Then
    hash(line).ForeColor = Color.Red
   End If
  Next
とか。
引用返信 編集キー/
■84285 / inTopicNo.3)  Re[2]: ループでの処理
□投稿者/ lop (2回)-(2017/06/09(Fri) 08:44:32)
No84278 (魔界の仮面弁士 さん) に返信
ありがとうございます

できました!!
Dictionaryは使ったことなかったので
勉強になりました!!



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -