+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

TextBox.BackColor & TextBox.ForeColor

  1. #1
    L'avatar di Luca Cannav˛
    Luca Cannav˛ non Ŕ in linea Scolaretto
    Salve ... potete dirmi dove sbaglio?
    Cliccando sulle caselle di testo riesco a colorarle ... ma ad ogni click le altre caselle dovrebbero ritornare al loro colore di default ... ma nn riesco a capire perchŔ rimane tutto invariato
    Vi posto il codice che ho usato:

    Private Sub TxtNome1_Click(ByVal sender AsObject, ByVal e As System.EventArgs) Handles TxtNome1.Click
     
      Dim TxtBox As New TextBox
      For i As Integer = 1 To DBDataSet.Anagrafica.Rows.Count
        If sender.Name = "TxtNome" & i.ToString Then
          sender.BackColor = Color.Black
           sender.ForeColor = Color.White
       Else
          TxtBox.Name = "TxtNome" & i.ToString
          TxtBox.BackColor = SystemColors.Control
          TxtBox.ForeColor = SystemColors.ControlText
         'solo x verifica ed i nomi corrispondono
          MsgBox("click = " & sender.name & " - Derivato = " & TxtBox.Name)
          EndIf
      Next i
    EndSub
     
     
    PrivateSub TxtNome2_Click(ByVal sender AsObject, ByVal e As System.EventArgs) Handles TxtNome2.Click
     
      Call TxtNome1_Click(sender, e)
    EndSub
    
    Ho provato anche con:
    TxtBox.BackColor = TextBox.DefaultBackColor
    
    ma il risultato nn cambia ... rimangono nere "evidenziate" ... dove sto sbagliando????
    Grazie

  2. #2
    L'avatar di _alka_
    _alka_ non Ŕ in linea Very Important Person
    Stai impostando le proprietÓ di una nuova casella di testo che - inspiegabilmente - crei "fresca fresca" all'interno dell'evento, ovviamente non visibile.

    PerchÚ mai hai scritto questa istruzione?
    Dim TxtBox As New TextBox
    
    ℹ️ Leggi di pi¨ su _alka_ ...

  3. #3
    L'avatar di Luca Cannav˛
    Luca Cannav˛ non Ŕ in linea Scolaretto
    Effettivamente se mi ci fai pensare ... hai ragione
    ma nn riesco a capire come risolvere il problema ... considerando che le TextBox sono svariate ... volevo creare un sub dinamica sfruttando gli oggetti ... ma forse nn si pu˛ fare ci˛ che mi serve?
    Ultima modifica di Luca Cannav˛; 18-08-2011 21:05 

  4. #4
    L'avatar di ken1986
    ken1986 non Ŕ in linea Scolaretto
    Potresti fare un foreach per ricolorare gli altri contorlli prima di colorare quello attuale, oppure, utilizzare l'evento leave
    ℹ️ Leggi di pi¨ su ken1986 ...

  5. #5
    L'avatar di _alka_
    _alka_ non Ŕ in linea Very Important Person
    Quote Originariamente inviato da Luca Cannav˛ Visualizza il messaggio
    Effettivamente se mi ci fai pensare ... hai ragione
    ma nn riesco a capire come risolvere il problema ... considerando che le TextBox sono svariate ... volevo creare un sub dinamica sfruttando gli oggetti ... ma forse nn si pu˛ fare ci˛ che mi serve?
    Come ti Ŕ stato suggerito, puoi enumerare i controlli del Form (o del contenitore delle caselle di testo) usando la proprietÓ Controls, oppure ricercare sulla collection (in base al nome) direttamente le caselle di testo in modo specifico (anche se, in questo caso, sarebbe meglio usare una lista appropriata per velocizzare la ricerca) per modificare le sfondo di tutte quelle che NON sono la casella su cui Ŕ stato spostato il focus.

    In alternativa, come suggerito, si potrebbe intercettare l'evento Leave sulla casella di testo per rimuovere il colore con cui evidenzi il controllo.

    Se si tratta di una funzionalitÓ che intendi riutilizzare molto, anche in altri progetti, potresti valutare di creare un controllo discendente da TextBox in cui vai a ridefinire i metodi chiave di gestione del focus automatizzando questo comportamento e consentendo di sfruttarlo inserendo sul Form le tue caselle di testo al posto di quelle standard.

    In breve, le soluzioni sono tante: valuta in base a prestazioni, attitudini, gusti e semplicitÓ di realizzazione quella che preferisci, aiutandoti con la documentazione in linea.

    Ciao!
    ℹ️ Leggi di pi¨ su _alka_ ...

  6. #6
    L'avatar di Luca Cannav˛
    Luca Cannav˛ non Ŕ in linea Scolaretto
    Raga ... siete grandiiiii
    Ecco come ho risolto il tutto:

    Private Sub TxtNome1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtNome1.Click
            For i As Integer = Me.Controls.Count - 1 To 0 Step -1
                If Me.Controls(i).GetType.Equals(GetType(TextBox)) Then
                    For ii As Integer = 1 To 6
                        If Me.Controls(i).Name = "TxtNome" & ii.ToString Then
                            If Me.Controls(i).Name = sender.Name Then
                                sender.BackColor = Color.Black
                                sender.forecolor = Color.White
                            Else
                                Me.Controls(i).BackColor = TextBox.DefaultBackColor
                                Me.Controls(i).ForeColor = TextBox.DefaultForeColor
                            End If
                        End If
                    Next ii
                End If
            Next i
        End Sub
    
    Private Sub TxtNome2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtNome2.Click
         Call TxtNome1_Click(sender, e)
    End Sub
    
    Grazie senza di voi sarei uscito pazzo
    ne ho ancora da studiare sul OOP ... ogni giorno scopro cose nuove!!!
    grazie ancora ciao
    Ultima modifica di Luca Cannav˛; 19-08-2011 18:20 

  7. #7
    L'avatar di ken1986
    ken1986 non Ŕ in linea Scolaretto
    Io ti consiglio di crearti un controllo personalizzato che estende la textbox ed utilizzi gli eventi mouse enter e mouse leave
    ℹ️ Leggi di pi¨ su ken1986 ...

  8. #8
    L'avatar di Luca Cannav˛
    Luca Cannav˛ non Ŕ in linea Scolaretto
    ripetevo questo codice per tutte le altre TextBox interessate:

    Private Sub TxtNome2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtNome2.Click
      Call TxtNome1_Click(sender, e)
    End Sub
    
    quindi scrivevo 3 righe di codice per ogni TextBox ... ma ho ridotto notevolmente il codice a questo:

    Private Sub TxtNome1_Click(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesTxtNome1.Click, TxtNome2.Click, 'etc etc
    '... codice
    End Sub
    
    P.S. - avevo altre sub del genere che chiamavano la sub principale col codice ... le ho cambiate tutte risparmiando decine e decine di linee di codice
    It's very nice .NET!!!

  9. #9
    L'avatar di Luca Cannav˛
    Luca Cannav˛ non Ŕ in linea Scolaretto
    Quote Originariamente inviato da ken1986 Visualizza il messaggio
    Io ti consiglio di crearti un controllo personalizzato che estende la textbox ed utilizzi gli eventi mouse enter e mouse leave
    grazie anche a te ... magari pi¨ avanti ... per il momento sono soddisfatto cosý

  10. #10
    L'avatar di _alka_
    _alka_ non Ŕ in linea Very Important Person
    Quote Originariamente inviato da Luca Cannav˛ Visualizza il messaggio
    quindi scrivevo 3 righe di codice per ogni TextBox ... ma ho ridotto notevolmente il codice a questo:

    Private Sub TxtNome1_Click(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesTxtNome1.Click, TxtNome2.Click, 'etc etc
    '... codice
    End Sub
    
    Se assegni la gestione dell'evento a runtime, non hai bisogno di ripetere i nomi dei controlli e degli eventi dopo la parola chiave Handles.

    Ciao!
    ℹ️ Leggi di pi¨ su _alka_ ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Somma due textbox totale terza textbox
    Da freddy60 nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 20-06-2020, 16:21
  2. Forecolor da testo
    Da strategaD nel forum Visual Basic .Net
    Risposte: 8
    Ultimo Post: 02-03-2016, 21:26
  3. Modificare il Backcolor della Textbox disabilitata
    Da roninkaiser nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 12-07-2012, 19:32
  4. Risolto: [VB 2010] Reimpostare a Default il BackColor di una Textbox
    Da gnsoft nel forum Visual Basic .Net
    Risposte: 5
    Ultimo Post: 25-05-2012, 08:44
  5. TextBox
    Da SAGGY67 nel forum Microsoft Word
    Risposte: 3
    Ultimo Post: 08-07-2005, 10:44