在我目前的项目中,我正在制作纸牌游戏。基本上它是如何工作的我有一个名为“lstdeck”的列表框。这是您找到所有卡片的地方。第二个叫做“lsthand”。这是从“lstdeck”取出5张牌并将其放入“lsthand”时创建的牌。
当从列表框(卡座或手牌)中选择卡时,卡信息应显示在“txtdescription”中。但是我无法弄清楚如何让多个listbox.selecteditem调用相同的布尔值。这是我希望工作的一小部分但是让我失望。
Dim CurrentList as string
Private Sub lsthand_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles lsthand.SelectedIndexChanged
Currentlist = "lsthand"
CheckCards()
End Sub
Private Sub CheckCards()
Dim FindSelection As String = ".selecteditem"
If Currentlist & FindSelection = "Face Card 1" Then
txtdescription.text = "This is the first face card."
在上面的实例中,选择名为“Face Card 1”的卡片(显示在列表框中)。它应该在哪个列表框中无关紧要。希望添加两个字符串,一个是“lsthand”和一个“.selecteditem”,结果将是:“lsthand.selecteditem”。不幸的是,这不起作用。有人知道解决方案吗?
另外,我意识到我可以创建一个“lstdeck.selecteditem”私有子来检查该列表框,一个用于“lsthand”。但我使用了大约180张不同的卡和6个列表框。任何帮助将不胜感激!
答案 0 :(得分:0)
只需创建一个处理所有SelectedIndexChanged
。
我想你想要这样的事:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
ListBox1.Items.AddRange(New String() {"dog", "cat", "rabbit", "tux"})
ListBox2.Items.AddRange(New String() {"earth", "fire", "water", "air"})
ListBox3.Items.AddRange(New String() {"Green Day", "Limp Bizkit", "Donots", "Guano Apes"})
End Sub
Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged, ListBox2.SelectedIndexChanged, ListBox3.SelectedIndexChanged
If DirectCast(sender, ListBox).SelectedItem = "cat" Then
MsgBox("best animal!")
Else
MsgBox("something else...")
End If
End Sub