我正在使用Windows窗体应用程序。我有一个带DropDownList的DropDownStyle的ComboBox。我还有一个ListBox,首先在表单加载时填充,然后基于所选择的是前面提到的使用ComboBox的SelectedValueChanged事件的ComboBox。我遇到的问题是,如果我连续两次在ComboBox中选择相同的项目,则ListBox中的项目正在发生变化。期望的结果是ListBox中的项在这种情况下保持不变。我该如何解决这个问题?
Option Strict On
Option Explicit On
Option Infer Off
Public Class frmGameScreen
Private Sub btnQuit_Click(sender As System.Object, e As System.EventArgs) Handles btnQuit.Click
Me.Close()
End Sub
Private Sub frmGameScreen_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim intAstrometricProbes As Integer
Dim intCasesOfMedicalSupplies As Integer
Dim intCommunicationsArrays As Integer
Dim intProvisions As Integer
Dim intSelfSealingStemBolts As Integer
Dim intShieldGenerators As Integer
Dim intWarpCoils As Integer
cboPlanets.SelectedItem = "Ferenginar"
lblItemPrice.Text = ""
PopulateItemList()
End Sub
Private Sub lstItems_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles lstItems.SelectedValueChanged
'lblItemPrice.Text = lstItems.Text
lblItemPrice.Text = CStr(cboPlanets.SelectedIndex)
End Sub
Private Sub cboPlanets_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles cboPlanets.SelectedValueChanged
PopulateItemList()
End Sub
Sub PopulateItemList()
Dim rndRandomNum As New Random
Dim intDisplay As Integer
lstItems.Items.Clear()
intDisplay = rndRandomNum.Next(1, 11)
If intDisplay > 5 Then
lstItems.Items.Add("Astrometric Probes")
End If
intDisplay = rndRandomNum.Next(1, 11)
If intDisplay > 5 Then
lstItems.Items.Add("Cases of Medical Supplies")
End If
intDisplay = rndRandomNum.Next(1, 11)
If intDisplay > 5 Then
lstItems.Items.Add("Communications Arrays")
End If
intDisplay = rndRandomNum.Next(1, 11)
If intDisplay > 5 Then
lstItems.Items.Add("Provisions")
End If
intDisplay = rndRandomNum.Next(1, 11)
If intDisplay > 5 Then
lstItems.Items.Add("Self-Sealing Stem Bolts")
End If
intDisplay = rndRandomNum.Next(1, 11)
If intDisplay > 5 Then
lstItems.Items.Add("Shield Generators")
End If
intDisplay = rndRandomNum.Next(1, 11)
If intDisplay > 5 Then
lstItems.Items.Add("Warp Coils")
End If
End Sub
End Class
答案 0 :(得分:1)
将当前值保存在组合框中,如果值相同,则不要调用PopulateItemList
Private Sub cboPlanets_SelectedValueChanged(sender As Object, ......
Dim idx As Integer = cboPlanets.SelectedIndex
if idx <> currentItemIndex Then
currentItemIndex = idx
PopulateItemList()
End If
End Sub
其中currentItemIndex在全局表单级别声明为
Dim currentItemIndex as Integer = -1