2012-08-10 2 views
1

Windows Forms 응용 프로그램에서 작업 중입니다. DropDownList의 DropDownStyle이있는 ComboBox가 있습니다. 또한 폼로드시 처음 채워진 ListBox가 있고 ComboBox의 SelectedValueChanged 이벤트를 사용하여 앞서 언급 한 ComboBox를 기반으로 선택됩니다. 내가 겪고있는 문제는 ComboBox에서 동일한 항목을 두 번 연속 선택하면 ListBox의 항목이 변경된다는 것입니다. 원하는 결과는이 상황에서 ListBox의 항목이 동일하게 유지된다는 것입니다. 어떻게 해결할 수 있을까요? 값이 currentItemIndex이ComboBox SelectedValueChanged 값을 인식하지 못했습니다.

Dim currentItemIndex as Integer = -1 
으로 글로벌 폼 수준에서 선언 된 같은

Private Sub cboPlanets_SelectedValueChanged(sender As Object, ...... 

    Dim idx As Integer = cboPlanets.SelectedIndex 
    if idx <> currentItemIndex Then 
     currentItemIndex = idx 
     PopulateItemList() 
    End If 
End Sub 

경우

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 

답변

1

은 콤보 상자에 현재 값을 저장하고 PopulateItemList을 기억하지 않습니다
관련 문제