「タイプ 'System.ArgumentOutOfRangeException' の初回例外が mscorlib.dll で発生しました」という例外が発生し、プログラムに影響を与えています。これが私のコードです。以下は、コードのテキストの要約です。
Private Sub Group_LeaderTextBox_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Group_LeaderTextBox.LostFocus
Dim ListCounter As Integer
Dim Checker As Integer = 0
Dim NewString As String
If Group_LeaderTextBox.Text <> "" Then
If ListBox_ParticipantsNames.Items.Count = 0 Then
ListBox_ParticipantsNames.Items.Add(Group_LeaderTextBox.Text & " (Group Leader)")
Else
For ListCounter = 0 To ListBox_ParticipantsNames.Items.Count - 1
If ListBox_ParticipantsNames.Items.Item(ListCounter).ToString.Substring(0) = Group_LeaderTextBox.Text Then
If ListBox_ParticipantsNames.Items.Item(0).ToString.Substring(ListBox_ParticipantsNames.Items.Item(0).ToString.Length - 14) = "(Group Leader)" Then
NewString = ListBox_ParticipantsNames.Items.Item(0).ToString.Replace(" (Group Leader)", "")
ListBox_ParticipantsNames.Items.RemoveAt(0)
ListBox_ParticipantsNames.Items.Insert(0, NewString)
End If
ListBox_ParticipantsNames.Items.RemoveAt(ListCounter)
ListBox_ParticipantsNames.Items.Insert(0, Group_LeaderTextBox.Text & " (Group Leader)")
Exit For
Else
Checker += 1
End If
Next
If Checker = ListBox_ParticipantsNames.Items.Count Then
If ListBox_ParticipantsNames.Items.Item(0).ToString.Substring(ListBox_ParticipantsNames.Items.Item(0).ToString.Length - 14) = "(Group Leader)" Then
ListBox_ParticipantsNames.Items.RemoveAt(0)
ListBox_ParticipantsNames.Items.Insert(0, Group_LeaderTextBox.Text & " (Group Leader)")
Else
ListBox_ParticipantsNames.Items.Insert(0, Group_LeaderTextBox.Text & " (Group Leader)")
End If
End If
End If
Else
If ListBox_ParticipantsNames.Items.Item(0).ToString.Substring(ListBox_ParticipantsNames.Items.Item(0).ToString.Length - 14) = "(Group Leader)" Then
ListBox_ParticipantsNames.Items.RemoveAt(0)
End If
End If
End Sub
したがって、このコードは、テキスト ボックス 'Group_LeaderTextBox' ('X' と呼びましょう) がフォーカスを失ったときにリスト ボックスに値を追加するためのものです。
ロジックは次のとおりです (記述されたコードの順序で):
ただし、最初に、いくつかの前提条件があります。
- リスト ボックスにアイテムを追加する方法は 2 つあります。1 つは X を使用する方法 (フォーカスを失う) で、もう 1 つは別のテキスト ボックスを使用する方法 ('Y' としましょう) です。(重要ではありません)
- リスト ボックスに追加された X からのすべてのテキストは、リスト ボックスに既に存在するものに関係なく、リスト ボックスの最初に表示されます。
- X からのテキスト、たとえば "John" をリスト ボックスに追加すると、" (Group Leader)" という文字列が追加されて表示されます。そのため、フォーカスを失うと、「John」は「John (Group Leader)」として表示されます。Y からの入力もあることに注意してください。ただし、Y からの入力は、含まれているテキストにすぎません。
- (フォーカスを失ったときに) X が空の場合、リスト ボックスの最初の項目に部分文字列 "(Group Leader)" が含まれていると、その項目は削除されます。したがって、X から「ジョン」を削除すると、「ジョン (グループ リーダー)」が削除されます。そして、グループのリーダーがいなければ、何も起こりません。
論理:
X に「John」と入力したとします。フォーカスが失われ、リスト ボックスが空の場合、「John (グループ リーダー)」がリスト ボックスに追加されるだけです。それ以外の場合、たとえば、Y を介してリスト ボックスにいくつかの項目を既に追加している場合、プログラムはリスト ボックスに "John" が既に存在するかどうかを確認します。グループ リーダーが存在し、リストにまだ存在しない場合、項目「ジョン」は、リストの一番上に追加される「ジョン (グループ リーダー)」に置き換えられます (これは機能しません)。また、すでにグループ リーダーがいる場合は、「ジョン (グループ リーダー)」が一番上に表示されますが、前のグループ リーダーは降格されます。そのため、以前の "Dick" :P が以前のグループ リーダーであった場合、文字列 "(Group Leader)" は "Dick (Group Leader)" から削除されます。
ここで、リスト全体をチェックした後、"John" に一致するアイテムがない場合、プログラムは以前と同様に、グループ リーダーが既に存在するかどうかをチェックします。存在する場合、前のグループ リーダーは単純に「ジョン (グループ リーダー)」に置き換えられます。また、グループ リーダーがいない場合は、「ジョン (グループ リーダー)」がリストの一番上に追加されるだけです (これもうまくいきません)。
問題 1 (シナリオ)
X: ジョン
リスト:
ジョン・
リッキー・
ジェーン
OR (リストの順序は問わない)
リスト:
リッキー
・ジョン・
ジェーン
X がフォーカスを失うと、アイテム「ジョン」が削除され、代わりに「ジョン (グループ リーダー)」がリストの一番上に追加されるはずですが、何も起こりません。
問題 2 (シナリオ)
X: ジョン
リスト:
リッキー・
ジェーン
X がフォーカスを失うと、"John (グループ リーダー)" がリストの一番上に追加されるはずですが、何も起こりません。
そのため、これらの問題が発生するたびに、すぐにウィンドウに例外が表示されます。誰でも私を助けることができますか?ありがとうございました。