Newsgroup: it.comp.lang.visual-basic
Titolo: PROBLEMI DI FUNZIONAMENTO SELECT CASE

Qualcuno mi sa spiegare perchè la porzione di codice relativa alla
condizione "List1.ListIndex = (intCount - 1) " viene eseguita solo se
controllata con una IF, e non con il select case? Non funziona nemmeno
con il "case else" (list1 è una listbox)
Grazie
VERSIONE FUNZIONANTE
 intCount = List1.ListCount
    If List1.ListIndex = 0 Then    'se è la prima lista
        Navigazione False, False, True, True
    End If
    If List1.ListIndex > 0 And List1.ListIndex < (intCount - 1) Then 'se
non è nè la prima nè l'ultima
        Navigazione True, True, True, True
    End If
    If List1.ListIndex = (intCount - 1) Then     'se è l'ultima
        Navigazione True, True, False, False
    End If
 
VERSIONE NON FUNZIONANTE    
'    intCount = List1.ListCount
'    Select Case List1.ListIndex
'    Case Is = 0        'se è la prima
'        Navigazione False, False, True, True
'    Case Is > 0 And List1.ListIndex < (intCount - 1)    ' se non è
prima o ultima
'        Navigazione True, True, True, True
'    'Case List1.Index = (intCount - 1)     ' se è l'ultima
'    Case Is = (intCount - 1) ' se è l'ultima
'        Navigazione True, True, False, False
'    End Select
'
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 prima o ultima
[...]
Come specificato nella guida in linea il case deve essere seguito da:
Case expressionlist-n
Required if a Case appears. Delimited list of one or more of the following
forms: expression, expression To expression, Is comparisonoperator
expression. The To keyword specifies a range of values. If you use the To
keyword, the smaller value must appear before To. Use the Is keyword with
comparison operators (except Is and Like) to specify a range of values. If
not supplied, the Is keyword is automatically inserted.
Devi usare qualcosa del tipo "expression To expression" (0 to (intCount-1)
nel tuo caso dovrebbe andare) per ottenere il risultato voluto.
Btw dello stesso argomento se ne era parlato qualche settimana fa... :)

 con il "case else" (list1 è una listbox)
[SNIP]
Il problema e' nell'utilizzo non corretto di 'Is', e' spiegato sulla guida e
se ne e' parlato anche in un thread di qualche settimana fa intitolato
"select case e operatori booleani".
Il sistema migliore in questo caso e' usare 'To':
intCount = List1.ListCount
Select Case List1.ListIndex
Case 0    'se è la prima
    Navigazione False, False, True, True
Case 1 To intCount - 2 ' se non è prima o ultima
    Navigazione True, True, True, True
Case intCount - 1     '(oppure Case Else) se è l'ultima
    Navigazione True, True, False, False
End Select
incidentalmente, la versione con IF puo' essere resa leggermente piu'
efficiente cosi':
intCount = List1.ListCount
If List1.ListIndex = 0 Then    'se è la prima lista
    Navigazione False, False, True, True
ElseIf List1.ListIndex > 0 And List1.ListIndex < (intCount - 1) Then
    Navigazione True, True, True, True
Else
    Navigazione True, True, False, False
End If
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

Grazie a tutti per le risposte, non avendo il tempo materiale per 
cercare un post simile, ho aprofittato della Vs. gentilezza.
Ancora grazie
