2017-04-21 12 views
1

私はvb.netアプリケーションを開発していますが、私はコンボボックスで問題を抱えています。Visual Basic ComboBox.SelectedIndex

私はこの私のコンボボックスで選択した項目が変更されたときに知っている必要があります:

Private Sub ComboBoxSite_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBoxSite.SelectedIndexChanged 
    If (ComboBoxSite.SelectedIndex <> 0) Then 'If it is not the default value 
     Console.WriteLine("ActionListenerIndex = {0}", ComboBoxSite.SelectedIndex) 'To debug 
     RequestAccesv2(0) 
    End If 
End Sub 

とRequestAccessv2()関数

Private Sub RequestAccesv2(taille As Integer) 
    initBoxesLocation() 'A function that clear/refill 4 comboBoxes 
    Console.WriteLine("SELECTED INDEX SITE : {0}", ComboBoxSite.SelectedIndex) 
     Select Case taille 
      Case 0 ..... 'Some database treatment 

End Sub 

そして結果は、出力にありますが2番目の関数が呼び出されても、私は同じselectedIndexを持っていません:

ActionListenerIndex = 2 
SELECTED INDEX SITE : -1 'Does it means thas nothing is selected ? 

/この問題を解決しましたか?

よろしく、

ファビアン
+0

_initBoxesLocation_のコードは何ですか?その関数でSelectedIndexを何らかの方法で変更したように見えます。そのコードを追加して質問を編集してください – Steve

+3

"クリア/補充コンボボックス"を選択した場合、選択したアイテムは削除され、 'SelectedIndex'は' -1'にリセットされます –

+0

実際に最初のアイテムはインデックス0になります。 If(ComboBoxSite.SelectedIndex <> 0)Then'は、2番目のインデックスから最初に変更するときには渡されません。これは意図されたものですか? – djv

答えて

0

あなたの答えをありがとう!

確かにSteveとA Friendの問題は、initBoxesLocation関数から来ていました。 このfuctionでは、私は4つのコンボボックスをクリアしていましたが、それぞれに1つのアイテムを追加しました。

私は本当にどこに問題があるのか​​分かりませんでした。

編集:はい、もちろん、私のコンボボックスが再フォーマットされました。問題があるので、もう一度アイテムを選択しませんでした。

Private Sub initBoxesLocation() 
    Console.WriteLine("initialisation entete") 
    initBoxEnteteSite() 
    initBoxEnteteBuilding() 
    initBoxEnteteModule() 
    initBoxEnteteRoom() 
End Sub 

私はそれらすべてを呼び出すことではない、実際に必要な、コンボボックスに変更に応じて、1つまたはその他のリセット機能を呼び出すことにより、initBoxesLocation()関数を分割します。

これで機能します。

ありがとうございますFabien

0

データインデックスは非負です。インデックス-1は選択を表しません。有効なインデックスが選択されている場合は、0以上を確認してください。

Private Sub ComboBoxSite_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBoxSite.SelectedIndexChanged 
    If (ComboBoxSite.SelectedIndex >= 0) Then 'If it is not the default value 
     Console.WriteLine("ActionListenerIndex = {0}", ComboBoxSite.SelectedIndex) 'To debug 
     RequestAccesv2(0) 
    End If 
End Sub 

参照MSDN:https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedindex(v=vs.110).aspx

ComboBox.SelectedIndex施設

プロパティ値
型:可能System.Int32 現在選択されている項目の0から始まるインデックス。
項目が選択されていない場合は、負の値(-1)が戻されます。

ここで、最初の値を無視してから、ComboBoxSite.SelectedIndex >= 1を使用します。しかし、ユーザーが2番目のものを選択した場合は、最初のものを無視しますか?

0

アイテムが選択されていない場合は、-1が返されます。これは、一般的にチェックされているものです。

Private Sub ComboBoxSite_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBoxSite.SelectedIndexChanged 
    If (ComboBoxSite.SelectedIndex <> -1) Then ' If something is selected 
     Console.WriteLine("ActionListenerIndex = {0}", ComboBoxSite.SelectedIndex) 'To debug 
     RequestAccesv2(0) 
    End If 
End Sub 

あなたが選択すべきではない最初のスロットに値を持っている場合、あなたはそれが代わりに> = 1であることを確認するためにチェックすることができます。

Private Sub ComboBoxSite_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBoxSite.SelectedIndexChanged 
    If (ComboBoxSite.SelectedIndex >= 1) Then ' If it is not the default value at index 0 (zero), and something is selected 
     Console.WriteLine("ActionListenerIndex = {0}", ComboBoxSite.SelectedIndex) 'To debug 
     RequestAccesv2(0) 
    End If 
End Sub