私はファイナルファンタジーX - 2のための進捗チェックリストを作成しようとしています。私はそれが必要ではないときにコードのループ、タイトルで説明するのは難しい
私は何を持っていることはこれです:
ラベル名 "ルカ - 1.6は、" LABEL1です。その下にCheckedListBox1、Label2、CheckedListBox2などがあります。
にCheckedListBox(略してCLB)内のすべての項目が あるとき、CLB、チェックされて起こると、それは を取り消し線とするだけで数Label.Textをトリミングしていることを追加するために変更され、フォントの持っている必要があります上記のラベルを付けておくべきことTabPage1.Textに追加します。
問題は、CLB1、CLB、ラベルの両方がチェックアウトされていることを確認し、TabPage1.Textが「Chapter 1- 1.6」に変更されていることです。今度はONEアイテムをCLB2にチェックすると、TabPage1.Textに1.6が追加され、3.2になります。それは私がチェックするすべての項目で繰り返されます。
私は問題の原因を知っていると思っていますが、それを修正する方法についてはわかりません。私はコードを凝縮したままにしたいと思いますし、各CLBに対して20個のIf文を書く必要はありません。
私のコードは以下の画像です。
Private Sub CheckedListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles CheckedListBox1.SelectedIndexChanged, CheckedListBox2.SelectedIndexChanged
Dim CLmatches() As Control
Dim LBmatches() As Control
For a As Integer = 1 To TabPage1.Controls.Count
CLmatches = Me.Controls.Find("CheckedListBox" & a, True)
If CLmatches.Length > 0 AndAlso TypeOf CLmatches(0) Is CheckedListBox Then
Dim cl As CheckedListBox = DirectCast(CLmatches(0), CheckedListBox)
If cl.CheckedItems.Count = cl.Items.Count Then
'CheckBox1.Checked = True
cl.Font = New Font(cl.Font, cl.Font.Style Or FontStyle.Strikeout)
LBmatches = Me.Controls.Find("Label" & a, True)
If LBmatches.Length > 0 AndAlso TypeOf LBmatches(0) Is Label Then
Dim lb = DirectCast(LBmatches(0), Label)
lb.Font = New Font(lb.Font, lb.Font.Style Or FontStyle.Strikeout)
Dim test As String = lb.Text
Dim phrase As String = test.Substring(test.IndexOf("+"c) + 1)
percentage += phrase
TabPage1.Text = "Chapter 1 - " & percentage & "%"
End If
End If
End If
Next
End Sub
End Class
私はこれを試してみることができました。 –