Back color text box

di il
14 risposte

Back color text box

Ciao a tutti.
premettendo che sono alle prime armi di ripresa della programmazione dopo circa 20 anni...
ho iniziato creando una form con più text box, combo box ecc ecc ma volendo affinare subito la grafica, volevo fare in modo che la text box o la combo box che ha il focus attivo avesse un determinato colore, che viene poi ripristinato al momento in cui perde il focus.
Avete un'idea per non dover ripetere n sub per ogni controllo.enter e leave?

Intanto avevo creato la prima, e mi è subito sorta la domanda
Private Sub ComboBox1_Enter(sender As Object, e As EventArgs) Handles ComboBox1.Enter
ComboBox1.BackColor = Color.MintCream
End Sub
Private Sub Combobox1_Leave(sender As Object, e As EventArgs) Handles ComboBox1.Leave
ComboBox1.BackColor = Color.WhiteSmoke
End Sub

grazie mille

14 Risposte

  • Re: Back color text box

    La cosa migliore è scrivere uno User Control di tipo Textbox modificato con la gestione dei colori come da te indicato e usarlo al posto dei Textbox normali.

    Oppure, se sono pochi, puoi scrivere
    Private Sub TextBox_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Leave,
    TextBox2.Leave,
    TextBox3.Leave,
    TextBox4.Leave

    per gestire lo stesso evento per più controlli
  • Re: Back color text box

    Miryone ha scritto:


    volevo fare in modo che la text box o la combo box che ha il focus attivo avesse un determinato colore, che viene poi ripristinato al momento in cui perde il focus.
    Avete un'idea per non dover ripetere n sub per ogni controllo.enter e leave?
    Ogni classe del .NET Framework (a meno che questo non venga esplicitamente impedito) può essere ereditata: puoi quindi creare un discendente della TextBox standard per realizzare un nuovo controllo nel quale, intercettando i metodi virtuali che scatenano gli eventi di tuo interesse, puoi introdurre la gestione del cambio del colore.

    I controlli della toolbox si possono usare direttamente, ma all'occorrenza possono anche essere impiegati come punto di partenza per la creazione di controlli personalizzati che ereditano l'implementazione già disponibile e aggiungono (o modificano) quello che serve.

    Ciao!
  • Re: Back color text box

    Null'Handle di ogni evento, ne puoi mettere tutti quelli che vuoi, e gestire l'evento specifico per il controllo che lo ha scatenato con l'oggetto sender (EDIT: come ti ha già consigliato oregon)
    
        Private Sub ComboBox_Enter(sender As Object, e As EventArgs) Handles ComboBox1.Enter, ComboBox2.Enter, ComboBox3.Enter
            sender.BackColor = Color.Yellow
        End Sub
    
        Private Sub ComboBox_Leave(sender As Object, e As EventArgs) Handles ComboBox1.Leave, ComboBox2.Leave, ComboBox3.Leave
            sender.BackColor = Color.White
        End Sub
    
        Private Sub TextBox_Enter(sender As Object, e As EventArgs) Handles TextBox1.Enter, TextBox2.Enter, TextBox3.Enter
            sender.BackColor = Color.Yellow
        End Sub
    
        Private Sub TextBox_Leave(sender As Object, e As EventArgs) Handles TextBox1.Leave, TextBox2.Leave, TextBox3.Leave
            sender.BackColor = Color.White
        End Sub
    
    per gestire il fuoco di un controllo ci sono anche gli eventi GotFocus e LostFocus
    Se i ComboBox sono molti, 50 e più, mi orienterei nel creare una lista di controlli gestibili con un indice, o a Linq.
  • Re: Back color text box

    @Rubik .... praticamente quello che gli ho detto io con, in più, un po' di codice pronto (pappa pronta) ... neanche il tempo di farlo ragionare ...
  • Re: Back color text box

    Oltre alle strade già suggerite potresti valutare anche un altro approccio:
    
    foreach(Control c in Controls)
    			{
    				if((c is TextBox))
    				{
    					c.Enter += new EventHandler(Classe.MetodoCheColora);
    					c.Leave += new EventHandler(Classe.MetodoCheRipristina);
    				}
    			}
    
    Ovviamente se nella form hai TabControls e GroupBox nidificati devi anche nidificare la foreach per intercettare i vari controlli al loro interno.
    E' in c# ma semplice da scrivere anche in VB.net
  • Re: Back color text box

    Nessuno che sfrutta la OOP per questa esigenza?
    Sono veramente basito...
  • Re: Back color text box

    oregon ha scritto:


    @Rubik .... praticamente quello che gli ho detto io con, in più, un po' di codice pronto (pappa pronta) ... neanche il tempo di farlo ragionare ...
    No c'è nulla da ragionare, secondo me la sintassi si impara vedendola, non si inventa.
    Miryone si dovrà concentrare a sviluppare la logica del suo codice, la sintassi se gliel'ho spiegata e poi fatta vedere io o le MSDN, cambia solo il tempo che ha impiegato per vederla, difficile da trovare se non sai che esiste.
    https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/handles-clause
    Anche gli ultimi due esempi Microsoft li definisci pappa pronta? (domanda con stile curioso e dubitativo, non provocatoria)
  • Re: Back color text box

    Rubik ha scritto:


    No c'è nulla da ragionare, secondo me la sintassi si impara vedendola, non si inventa.
    No ... assolutamente no. La sintassi di un linguaggio si impara studiandola sui libri e sulla documentazione in cui viene spiegata.

    Imparare copiando delle parole in sequenza che non si conoscono, non vuol dire imparare un linguaggio.
    E' un approccio del tutto sbagliato.
    sviluppare la logica del suo codice
    La logica che dovrà seguire è un'altra cosa, quella si impara ad affinare con l'esperienza.
    cambia solo il tempo che ha impiegato per vederla
    Proprio per questo si chiama "pappa pronta".
    difficile da trovare se non sai che esiste.
    Questa è una assurdità grande come una casa. I libri si aprono al primo capitolo e si chiudono all'ultimo.
    Anche gli ultimi due esempi ...
    Gli esempi di uso alla fine di ogni argomento spiegato nella documentazione esistono perché sono mirati all'argomento.
    E sono presenti anche sui libri. Non c'entra proprio niente quello che dici.
  • Re: Back color text box

    Ragazzi vi ringrazio davvero tutti quanti!!!
    Questa sera con calma faccio un po’ di prove
    Il fatto è che avendo già programmato in un lontano passato, faccio fatica a seguire passo passo prima le cose banali per poi finire alle cose più complicate.
    Non che questa lo sia, ma stavo appunto seguendo un “corso” dove spiegava come gestire un evento, e ricordando il passato, sono andata a pensare a come gestire il tutto in grande
    Bisogna che mi ci metta con un pochino di pazienza in più!!!

    Grazie comunque a tutti
    Non mi aspettavo tante risposte
  • Re: Back color text box

    Qui https://www.pierotofy.it/pages/guide/Guida_al_Visual_Basic_dotNET/ trovi un manuale vb.net gratuito , puoi trovare anche qualche spunto interessante , ciao
  • Re: Back color text box

    Quel manuale è un ottimo punto da cui iniziare a studiare perché è fatto bene e conosco chi l'ha scritto e la sua preparazione.

    Detto questo, studia da quello prima di scrivere codice. E' possibile Rubik ... si impara così, come fanno tutti, senza scorciatoie.
  • Re: Back color text box

    Concordo, molto valido per iniziare, l'ho letto tutto e alcuni capitoli più volte, non conosco l'autore di persona, ma ho visto alcuni dei suoi notevoli lavori in VB.Net, oramai passati.
    Se clicchi sul link qui sotto, la guida si aprirà con tutti i suoi capitoli.
    http://www.pierotofy.it/pages/guide/Guida_al_Visual_Basic_dotNET/
  • Re: Back color text box

    Veramente molto gentili
    Adesso mi metto a vedere un po’ di cosette
  • Re: Back color text box

    Ho iniziato a seguire passo passo questo manuale che avevo trovato giorni fa.
    La segnalo anche x altri eventuali novizi

    http://www.vbscuola.it/VB2010/A_Scuola_con_VB2010.pd
Devi accedere o registrarti per scrivere nel forum
14 risposte