ラベルとテキストボックスがいくつか作成されていますが、それらは5つのラベルと5つのテキストボックスがあるように、 この例では、名前が "myLabel" & var、var = 1〜5のすべてのラベルを再帰的に検索できます。 私が持っているものは、3項目のラベルのコンテキストメニューです。項目1は、ユーザが所望するもの、数字、文字、および/または記号にラベルテキストを変更する。アイテム2と3は私が問題を抱えているものです。 アイテム2は、ラベルテキストを最初に開始するときにD1に変更する必要があります.2回目にラベルテキストをD2に変更する必要があります.3回目の呼び出しが呼び出された場合、エラーは継続できません。 項目3は、テキストがそれぞれS1とS2であることを除いて、2と同じです。 私はこれまでに何をしてきましたか?しかし、私はループで立ち往生し続けています。あるいは、label.textを私が望むものに変更しません。すべてのヘルプは高く評価されコード内に作成されたラベルテキストに特定の文字列が含まれていないか確認してください。
Private Sub lblMenuItem3_Click()
label = lblContextMenu.SourceControl.Name
For Each control As Control In Me.Controls
If TypeOf control Is Label Then
Dim myLabel As Label = DirectCast(control, Label)
Dim str As String = myLabel.Text
'If myLabel.Text = "S1" Then
If LCase(str).Contains(LCase("S1")) Then
'MessageBox.Show("That string is in here!")
Me.Controls.Item(label).Text = "S2"
Else
'MessageBox.Show("The string is not in here!")
Me.Controls.Item(label).Text = "S1"
End If
Else
Me.Controls.Item(label).Text = "S1"
'End If
End If
Next
'Me.Controls.Item(label).Text = "S1"
'Me.Controls.Item(label).Text = "S2"
End Sub
EDIT1:このコードは、部分的に私はそれを必要とするが、何らかの理由でそれがサブに、フォーム上のラベルの数と同じ回数だけ実行され、私はとして働いている わからない理由
Private Sub lblMenuItem3_Click()
label = lblContextMenu.SourceControl.Name
Dim s1lbl As Boolean = False
Dim s2lbl As Boolean = False
For Each control As Control In Me.Controls
If TypeOf control Is Label Then
Dim myLabel As Label = DirectCast(control, Label)
Dim str As String = myLabel.Text
If LCase(str).Contains(LCase("S1")) Then
s1lbl = True
Exit For
ElseIf LCase(str).Contains(LCase("S2")) Then
s2lbl = True
Exit For
Else
Continue For
End If
End If
Next
If s1lbl = False AndAlso s2lbl = False Then
Me.Controls.Item(label).Text = "S1"
Exit Sub
End If
If s1lbl = True AndAlso s2lbl = False Then
Me.Controls.Item(label).Text = "S2"
Exit Sub
End If
If s1lbl = False AndAlso s2lbl = True Then
MessageBox.Show("Too many Shallow points, only 2 allowed.")
Exit Sub
End If
End Sub
これはコードです:
Private Sub TextBoxABPts_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBoxABPts.KeyPress
For i = 1 To TextBoxABPts.Text
lbl1 = New Label()
lbl1.Location = New Point(2, 165 + 25 * (i - 1))
lbl1.Name = "myLabel" & i
lbl1.Text = i
Me.Controls.Add(lbl1)
AddHandler lblMenuItem1.Click, AddressOf lblMenuItem1_Click
AddHandler lblMenuItem2.Click, AddressOf lblMenuItem2_Click
AddHandler lblMenuItem3.Click, AddressOf lblMenuItem3_Click
lblContextMenu.MenuItems.Add(lblMenuItem1)
lblContextMenu.MenuItems.Add(lblMenuItem2)
lblContextMenu.MenuItems.Add(lblMenuItem3)
lbl1.ContextMenu = lblContextMenu
Next i
TextBoxABDist.Focus()
End If
lblMenuItem3_Click()が発生しているコードを表示できる場合は役立ちます。 – Neal
@Nealラベル作成用のコードであり、メニュー項目の追加ハンドラーです。ボタン内にあります。 –
lblContextMenuは各lbl1に対して新規に作成されていません。試してみるか、毎回それを追加した後にMenuItemをクリアするか、毎回forループの中で新しいものを作成してください。 – Neal