Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ciao a tutti. Sono alle prese con un problemino: mi servirebbe la proprietà "Hide Selection" in una listbox. Sto cercando di creare un intellisense per una text box. Ho creato la mia listbox sotto la text; se l'utente sposta il focus dalla listbox alla text box, l'ultimo elemento che aveva il focus della list rimane ombreggiato. Cercando in internet ho trovato che la proprietà che gestisce questo aspetto è presente nelle listview e si chiama appunto hide selection. Per le listbox non c'è, o forse non l'ho trovata.
Cercando su google ho trovato però questo codice:
Codice sorgente - presumibilmente VB.NET
PublicClass ListBoxEx
Inherits ListBox
Private m_hideSelection AsBoolean=True
PublicProperty HideSelection()AsBoolean
Get
Return m_hideSelection
EndGet
Set(ByVal value AsBoolean)
m_hideSelection = value
EndSet
EndProperty
PublicSubNew()
Me.DrawMode= DrawMode.OwnerDrawFixed
EndSub
Protected OverridesSub OnDrawItem(ByVal e As DrawItemEventArgs)
Protected OverridesSub OnLostFocus(ByVal e As EventArgs)
MyBase.OnLostFocus(e)
Me.Invalidate()
EndSub
PrivateSub InitializeComponent()
Me.SuspendLayout()
Me.ResumeLayout(False)
EndSub
EndClass
Da quello che ho capito crea un nuovo oggetto ereditanto le caratteristiche della listbox e aggiungendo in più la proprietà che serve a me.. Il trucco è che ridisegna gli elementi e a seconda del valore della proprietà, toglie l'ombreggiatura agli item quando la list non ha il focus.
Ma non riesco a usarlo.. Incollo il codice in un elemento "controllo utente", e poi? Trascino una listbox?
Non è possibile riutilizzare il codice in qualche modo, prevedento magari sono una sub che agisce riscrivendo solo l'item della mia listbox che ho sul form?
Se decidessi allora di passare alla listView.. che differenze ci sarebbero in termini di performance? Alla fine, la mia list conterrà all'incirca un massimo di 30 items.. più che altro dovrò "cambiarli" spesso...
Ciao e grazie...
Ultima modifica effettuata da Renny il 06/10/2011 alle 22:10
Si, l'ho già visto.. Ora ci ridò un'occhio, perchè i lavori del totem sono sempre pieni di sorprese e spunti interessanti.. Comunque sto usando il codice che ho postato creando il controllo a runtime e aggiungendolo al form.. funziona! ;) - Renny - 07/10/11 20:02
Non ho ben capito a cosa ti serve, ma quello che posso dirti è che non devi trascinare una listbox ma il controllo utente.
Si.. Ma, se puoi gentilmente spiegarmi come usare questo codice.. Lo incollo in un nuovo elemento "controllo utente", ma poi, per averlo nella barra degli strumenti, come si fa? - Renny - 06/10/11 22:21
Ora ho capito il tuo problema, ce l'ho avuto anch'io ed è postato qui [url]http://www.pierotofy.it/pages/extras/forum/16/1026744-%5Bvbnet_problema_con_controllo_utente/[/url] - GN - 06/10/11 22:24
Eh.. credo sia dovuto al fatto che io non ho l'assembly di quel componente.. Non è stato creato. Esiste solo la classe che lo definisce, che è il codice che ho postato.. - Renny - 06/10/11 22:30
Ok, ce l'ho fatta, a quanto sembra..Devi fare come ti suggeriscono loro, cioè, lo aggiungi alla casella degli strumenti. Prima però devi definire nelle proprietà del controllo utente un namespace.. Boh, ho smanettato un po e alla fine è saltato fuori. Il tuo controllo ha l'icona di una ruota dentata - Renny - 06/10/11 22:39
Se però qualche guru ci da comunque un'occhiata al codice e mi dice che ne pensa.. grazie! - Renny - 07/10/11 00:07
Spero di aver capito quello che vuoi fare...
se ho capito ti stai solo complicando la vita...
La textBox prevede alcune proprietà per gestire suggerimenti:
-AutoCompleteCustomSource
-AutoCompleteMode
-AutoCompleteSource
la prima definisce gli elementi da suggerire (quelli che tu hai nella tua listbox) ed è da usare con la 3°
la seconda indica il modo per suggerire tali elementi
la terza indica la sorgente degli elementi da suggerire, se inserisci CoustomSource saranno quelli definiti nella 1° proprietà
gioca con questi elementi...
Uhm.. No, non credo vada bene.. Io vorrei fare una cosa tipo l'intellisense..Anzi, potendo mettere un numero limitato "parole" (o sigle di una codifica, nel mio caso), voglio forzare l'utente o a cercare la parola da scrivere nella listbox, oppure la scrive lui, digitando le lettere nella textbox.. - Renny - 07/10/11 16:21