Newsgroup: it.comp.lang.visual-basic
Titolo: [.NET]  Combobox evento con comportamento strano

Ciao a tutti,
rilevo il seguente fastidioso problema con VB.net:
in un form ho una combobox che carico (nel load del form) tramite un
dataset.
Quella combobox, mi serve per filtrare una datagrid, quindi il caricamento
del datagrid avviene all'evento .selectedindexchanged della combobox.
In effetti il concetto fila, se non chè ho scoperto che l'evento
selectedindexchanged e anche .selectedvaluechange, viene sollevato
direttamente dal processo di popolazione della combo!
Se ad esempio si mette:
Private Sub cmb1(...(cut)...) Handles cmb1.SelectedIndexChange
      MsgBox("ciao")
End Sub
il messaggio viene visualizzato, al caricamento del form (perché è li che
viene ovviamente popolata la combo), tante volte quante sono le voci che
vanno a popolare la combo; quindi il caricamento dei dati nella combo
solleva l'evento!!!
Il problema è che così non si riesce ad attribuire un'azione a
quell'evento, perché viene sollevato subito al caricamento della form (e
quindi nel mio caso giustamente crasha).
Come si può risolvere? 
grazie mille
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 del datagrid avviene all'evento .selectedindexchanged della combobox.
Una indicazione
1- variabile a livello di modulo
2- finito di caricare la combo assegnare un valore alla variabile
3- nell'evento select...... della combo, verifica del valore della
variabile, se non ha l'assegnato esce dalla sub
Ave
giuseppeD
---
CCR


 variabile, se non ha l'assegnato esce dalla sub
voto per un approccio diverso.
associare il codice all'evento solo dopo aver effettuato il caricamento del
combo
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 combo
Concordo
Ave
giuseppeD

 combo
cioč?
-- 
Per diventare grandi non bisogna avere paura di essere piccoli
Per rispondere in privato elimina dall'indirizzo "togliquesto"
MasterDavidex - David Ruscelli


Cioč non leghi la sub all'evento dell'oggetto a design ma solo quando ti
serve con AddHandler e RemoveHandler.
Sinceramente non ho mai notato questo comportamento della combobox e mi pare
strano che cambi index durante il caricamento: significherebbe che non si
avrebbe mai una combo bianca senza item selezionati, il che non avviene.
Ciao

 cioè?
frank, per favore, non costringermi a manifestare tutta la mia ignoranza,
richiedendo spiegazioni dettagliate.
in 
vb.net
 l'associazione tra eventi e codice non è rigidamente stabilita dal
nome della routine, come avviene in vb6, ma può essere stabilita in (almeno)
due modi:
1) design time: aggiungendo l'istruzione handles nomeoggetto.nomeevento alla
firma della routine
2) run time: tramite l'istruzione addhandler, guarda la guida per i
dettagli, perchè proprio non mi ricordo più, ma dovrebbe essere una cosa del
tipo
addhandler nomeoggetto.nomeevento, addressof nomesub
in questo secondo caso puoi decidere quando far iniziare l'associazione tra
evento e codice (puoi anche terminarlo con removehandler, credo)
spero di essere stato chiaro, e di non aver fatto molti errori.


 mi pare strano che cambi index durante il caricamento:
io l'ho sistematicamente notato su 
vs.net
 2002, l'unico che ho.


 serve con AddHandler e RemoveHandler.
In vb6 non si pole vero?
Immagno sia per questo che mi suona cosě strano...
Perň č una figata!
Veramente in .NET si possono slegare e legare gli eventi e oggetti a
piacimento?
Questo Balena non ce l'aveva fatto vedere!
 Spettacolo!



Se č cosě davvero č bellissimo!


  Spettacolo!
Nel testo, ricordo di esercizi simili.
Comunque, penso che quanto segue possa funzionare.
Se non ricordo come la firma,
aggiungo dall'editor, se ho una combo di nome cbo:
 Private Sub cbo_SelectedIndexChanged(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles cbo.SelectedIndexChanged
End Sub
elimino l' Handles e diventa:
 Private Sub cbo_SelectedIndexChanged(ByVal sender As System.Object, ByVal
e As System.EventArgs)
        'Codice
 MessageBox.Show(cbo.Text)
End Sub
Per l'aggancio, aggiungo:
 Me.cbo.DataSource = dt
 Me.cbo.DisplayMember = "customerID"
 Me.cbo.ValueMember = "OrderID"
AddHandler cbo.SelectedIndexChanged, AddressOf cbo_SelectedIndexChanged
Quindi l'evento viene associato a fine caricamento della combo.


 Nel testo, ricordo di esercizi simili.
Io mi riferivo al seminario di qualche mese fà.
Il libro(tomo) mi deve ancora arrivare..
cmq grazie

 io l'ho sistematicamente notato su 
vs.net
 2002, l'unico che ho.
anch'io ho la 2002, forse con la 2003 è stato risolto?
Comunque grazie mille a tutti, interessantissimo il consiglio per gestire
l'handle in maniera differente!!
Davvero grazie!
P.S. mi piacerebbe capire però se era un "bug" della 2002 o io che non
capisco!
