Comodo comportamento simile a una barra con Windows Form
-
03-07-2019 - |
Domanda
Sto cercando di creare una casella combinata che si comporta in qualche modo come la Awesomebar di Firefox 3, con il seguente comportamento:
- Digita il testo
- Riporta in modo asincrono i risultati
- Su e giù seleziona i risultati nell'elenco, MA lascia il testo digitato nella casella di immissione in modo che l'utente possa continuare a modificare per limitare il set di risultati in modo diverso
- Invio genera un evento che verrà gestito dal modulo padre
Ho i risultati asincroni e il filtro tutto funziona, ma non ho un buon metodo per visualizzare e selezionare i risultati.
Una casella combinata riempie automaticamente la casella di immissione con ciò che è selezionato quando si scorre verso il basso. Errore n. 3.
Ho i controlli DevExpress, ma la loro casella combinata fa la stessa cosa e non riesco nemmeno a capire come sovrascrivere.
Una LookupEdit non consente di scrivere cose arbitrarie. Nemmeno un PopupContainerEdit.
Voglio un comportamento simile a una casella di testo con una casella di riepilogo al di sotto di essa e gli eventi su / giù nella casella di testo vengono passati alla casella di riepilogo. Ma se provo a creare un controllo personalizzato che combini i due in questo modo, non ho idea di come "float" " la casella di riepilogo come il menu a discesa in una normale casella combinata.
Indizi molto apprezzati!
Soluzione
Potrebbe essere necessario utilizzare una casella di testo anziché una casella combinata perché l'utilizzo dei tasti freccia consente di selezionare i valori dall'elenco delle combo e sovrascrivere il valore corrente. Usando la casella di testo puoi cercare nell'evento TextChanged e puoi memorizzare il valore attualmente digitato sovrascrivendo l'evento KeyPress per raccogliere e memorizzare le chiavi che l'utente ha digitato.
L'elenco popup di valori dovrebbe essere disegnato automaticamente nell'evento paint.
Questo può sembrare eccessivamente complicato, ma probabilmente è necessario abbandonare il controllo combo e implementare alcune delle sue funzioni da soli.
Altri suggerimenti
Sto usando il controllo Completamento automatico di Skybound. È gratis. Può essere personalizzato, in modo da poter approssimare il comportamento da Awesomebar.