Chiudere a aprire una listview

sabato 27 settembre 2008 - 18.53

ilario Profilo | Senior Member

ciao

anzichè usare una combo, uso una textbox un bottone apri e una listview

il mio problema è chiudere e aprire la listview con lo stesso bottone
allego immagini


538x295 124Kb


il codice nel bottone è if lswlista.visible= false then lswlista.height = 217 lswlista.visibile = true lswlista.focus() else lswlista.visible = false end if

questo funziona bene, il problema è che se la apro ma poi non clicco sul pulsante per chiuderla,
ma mi sposto su altri controlli , giustamente la listview rimana aperta,
per ovviare a questo nel

lswlista.lostfocus ( anche leave)
lswlista.visible = false

e funziona, ma se clicco sul pulsante apri (con il codice inserito che ho scritto ) me la chiude e me la riapre

come facciooooo???

ciao
ilario




sergio58 Profilo | Junior Member

Non ho capito bene se quando ti sposti in un altro controllo la listview vuoi che si chiuda in ogni caso, se deve chiudersi.
Perchè da come hai scritto ,non si capisce che lavoro deve fare questa listview.

ilario Profilo | Senior Member

ciao

si
si deve chiudere sia se mi sposto su un altro controllo, (e lo faccio nel lostfocus o leave .visible= false)
ma anche premendo nuovamente il bottone apri(in figura il primo con la v)
il problema è qui, se la vade chiusa (si chiude nel lostfocus della lista) me la riapre
dovrei riuscire a prevedere nel lostfocus su che tipo di controllo arriva il prossimo focus

del tipo

if fuocus = al tastro apri non fare nientre
else
lista.visible= false
end if

ma come

Ilario

sergio58 Profilo | Junior Member

Ti mando questo codice , che ho provato prima di spedirlo e funziona.
Per aprire e chiudere la listview si deve premere sempr sul pulsante.
Se non è calzante al 100% lo puoi adattare alle tue esigenze una volta capito il
principio di funzionamento.Nel form ho inserito una listview, una textbox e un bottone

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
sergio

ilario Profilo | Senior Member

il codice funziona col tasto (button1) apri
ma prova a cliccare sulla textbox 1 la lista rimane aperta,

il problema è
prova ad immaginare che nel form ci sono tantissimi altri controlli, non posso inserire in ogni controllo .gotfocus l'istruzione Button1.Tag = sender

tieni conto che ci possono essere anche tanti bottoni apri abbinati a altrettante listview

ti viene in mente altro?


sergio58 Profilo | Junior Member

Il problema non credo che si ponga perchè nel caso hai più controlli devi fare un overloadig per ogni controllo, aggiungendo una select case per discriminare quale listview si deve chiudere.
Vale anche per _gotFocus

ilario Profilo | Senior Member

proverò poi ti faccio sapere

grazie

ilario

ilario Profilo | Senior Member

ciao

ho trovato una soluzione più grezza ma funziona e non devo aggiungere codice se non due righe

visto che i pulsanti "apri" sono tutti uguali,
ho inserito un pulsante uguale che si chiama chiudi visibile = false

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListView1.Visible = True
ListView1.Focus()
chiudi.Location = Button1.Location
chiudi.Visible = True

End Sub

Private Sub ListView1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.LostFocus
ListView1.Visible = False
chiudi.Visible = False
End Sub


Private Sub chiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chiudi.Click
chiudi.Visible = False

End Sub

cosi lo faccio sovrapporre al pulsante apri, e lo rendo invisibile se lo premi, la listview si chiude perdendo il focus


grazie

ciao
ilario

poi se mi verrà in mente qualcosa di più carino .....
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5