どうも!リョクちゃです。
あらかじめ表示するテキストが決まっている場合は、
フォームエディタで事前にテキストプロパティに設定しておけば問題ないのですが、
たとえば、ある処理をしていて順に文字や値を
テキストボックスやラベルに表示したい場合があるとします。
今回はそんなときに便利な方法を紹介していきます。
ちなみに前回はこちら
目次
準備編:ラベルとテキストボックスを配置
まず、下に示すようなフォームを作ってみましょう。
フォームに配置出来たら、
ラベルとテキストボックスにまとめて表示するための準備をしていきます。
配置したラベルとテキストの軍団を作る
下のようなコードを書いてそれぞれの軍団を作っていきます。
1 2 3 4 5 6 7 8 9 10 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' ラベル軍団を変数として宣言 Dim labelParty() As System.Windows.Forms.Label ' テキスト軍団を変数として宣言 Dim txtParty() As System.Windows.Forms.TextBox End Sub End Class |
ここでは、labelParty()、txtParty()と書くことで
ラベル型そしてテキスト型の配列変数として宣言をしています。
※ System.Windows.Formsは、省略可能です。
このまま宣言しただけでは使うことができないので、インスタンスを作成してあげます。
作成した軍団のインスタンスを作成
下のようなコードを書き、それぞれのインスタンスを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' ラベル軍団を変数として宣言 Dim labelParty() As System.Windows.Forms.Label ' テキスト軍団を変数として宣言 Dim txtParty() As System.Windows.Forms.TextBox ' インスタンスを作成 labelParty = New System.Windows.Forms.Label() _ {Me.Label1, Me.Label2, Me.Label3, Me.Label4, Me.Label5} txtParty = New System.Windows.Forms.TextBox() _ {Me.TextBox1, Me.TextBox2, Me.TextBox3, Me.TextBox4, Me.TextBox4, Me.TextBox5, Me.TextBox6} End Sub End Class |
インスタンスを作成する際に、{}を使って配置したラベルとテキストボックスを
それぞれ記述しています。
こうすることでlabelParty()とtxtParty()には、配置したラベルとテキストボックスが含まれ、
軍団の作成ができました。
次に、インスタンス作成した軍団に対して、文字列を表示する準備をしていきます。
表示する文字列を作成
ここでは前回触れた、リストを使って表示する文字列を書いていきます。
下のようなコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' ラベルに入れるテキストを作成 Dim lstOutText As List(Of String) lstOutText = New List(Of String)({"月", "火", "水", "木", "金"}) ' ラベル軍団を変数として宣言 Dim labelParty() As System.Windows.Forms.Label ' テキスト軍団を変数として宣言 Dim txtParty() As System.Windows.Forms.TextBox ' インスタンスを作成 labelParty = New System.Windows.Forms.Label() _ {Me.Label1, Me.Label2, Me.Label3, Me.Label4, Me.Label5} txtParty = New System.Windows.Forms.TextBox() _ {Me.TextBox1, Me.TextBox2, Me.TextBox3, Me.TextBox4, Me.TextBox4, Me.TextBox5, Me.TextBox6} End Sub End Class |
ラベルに入れるテキストを作成の箇所で、文字列を作成しています。
ここではlstOutText変数に{“月”,”火”,”水”,”木”,”金”}を含めています。
次からいよいよ、文字列をまとめて表示していくコードを書いていきます。
ラベル軍団を使って文字列をまとめて表示
下のようなコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' ラベルに入れるテキストを作成 Dim lstOutText As List(Of String) lstOutText = New List(Of String)({"月", "火", "水", "木", "金"}) ' ラベル軍団を変数として宣言 Dim labelParty() As System.Windows.Forms.Label ' テキスト軍団を変数として宣言 Dim txtParty() As System.Windows.Forms.TextBox ' インスタンスを作成 labelParty = New System.Windows.Forms.Label() _ {Me.Label1, Me.Label2, Me.Label3, Me.Label4, Me.Label5} txtParty = New System.Windows.Forms.TextBox() _ {Me.TextBox1, Me.TextBox2, Me.TextBox3, Me.TextBox4, Me.TextBox4, Me.TextBox5, Me.TextBox6} ' ラベル軍団に値を入れていく For i As Integer = 0 To labelParty.Count - 1 labelParty(i).Text = lstOutText(i) Next End Sub End Class |
For文を使って、ループを回すことでラベル軍団のラベル達に文字列を表示していきます。
ボタンを押して、実行できているか確認してみましょう。
下のような表示が出れば間違いなく行えています。
同様に次はテキスト軍団に表示する準備をしていきましょう。
テキスト軍団に表示していく
テキスト軍団には下のような文字列を表示してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' ラベルに入れるテキストを作成 Dim lstOutText As List(Of String) lstOutText = New List(Of String)({"月", "火", "水", "木", "金"}) ' ラベル軍団を変数として宣言 Dim labelParty() As System.Windows.Forms.Label ' テキスト軍団を変数として宣言 Dim txtParty() As System.Windows.Forms.TextBox ' インスタンスを作成 labelParty = New System.Windows.Forms.Label() _ {Me.Label1, Me.Label2, Me.Label3, Me.Label4, Me.Label5} txtParty = New System.Windows.Forms.TextBox() _ {Me.TextBox1, Me.TextBox2, Me.TextBox3, Me.TextBox4, Me.TextBox5, Me.TextBox6} ' ラベル軍団に値を入れていく For i As Integer = 0 To labelParty.Count - 1 labelParty(i).Text = lstOutText(i) Next ' テキストボックスに表示する値 Dim aryText As String() = New String() {"お", "つ", "か", "れ", "さ", "ま"} End Sub End Class |
ラベルの時と違って、変数aryTextを文字列型の配列として宣言しています。
値として、”おつかれさま”を1文字ずつ含めています。
それではラベルの時、同様表示をさせていくコードを書いていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' ラベルに入れるテキストを作成 Dim lstOutText As List(Of String) lstOutText = New List(Of String)({"月", "火", "水", "木", "金"}) ' ラベル軍団を変数として宣言 Dim labelParty() As System.Windows.Forms.Label ' テキスト軍団を変数として宣言 Dim txtParty() As System.Windows.Forms.TextBox ' インスタンスを作成 labelParty = New System.Windows.Forms.Label() _ {Me.Label1, Me.Label2, Me.Label3, Me.Label4, Me.Label5} txtParty = New System.Windows.Forms.TextBox() _ {Me.TextBox1, Me.TextBox2, Me.TextBox3, Me.TextBox4, Me.TextBox5, Me.TextBox6} ' ラベル軍団に値を入れていく For i As Integer = 0 To labelParty.Count - 1 labelParty(i).Text = lstOutText(i) Next ' テキストボックスに表示する値 Dim aryText As String() = New String() {"お", "つ", "か", "れ", "さ", "ま"} ' テキスト軍団に値を入れていく For j As Integer = 0 To txtParty.Count - 1 txtParty(j).Text = aryText(j) Next j End Sub End Class |
実際にボタンを押して実行してみましょう。
下のような表示なれば間違いなく実行ができています。
まとめ
複数配置したラベルやテキストボックスにまとめて文字を表示するには、
-
配置したラベルやテキストボックスを代入する配列変数を宣言する。例) Dim labelParty As Label()
-
1で作成した変数のインスタンスを作成する例) labelParty() = New Label() {“配置したラベル名1″,””配置したラベル名2”}
-
For文やWhile文を使って、2でインスタンス化した軍団に表示をさせていく。
ありがとうございます!
・こちらの書籍を参考にVB.Net勉強しています。