Override GotFocus event   zodpovězená otázka

VB.NET, Komponenty, Grafika

Dobrý deň,

Mám veľkú registračnú formu na ktorej je celá horda TextBoxov. Chcel by som, aby sa ten, ktorý je focused zvýraznil [napríklad pre GetFocus evente sa zmení backgroundcolor na yellow, pri LostFocus zase na Default]

Viem, že by sa dalo x-krát copy pastovať a napísať to pre každý TextBox zvlášť, avšak ja by som to rád skrátil nejakým takýmto trikom, či už pre ušetrenie práce, alebo pre vyvarovanie sa rôznym preklepom, ktoré pri takomto robotickom copy-pastovaní môžu nastať.

Nevedel by prosím s týmto niekto pomôcť ?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Asi nejlepší je napsat si vlastní komponentu děděnou od TextBoxu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ahojte...tak na MSDN mi poradili tuto fintu a funguje, takže ktokoľvek by niekedy niečo podobné potreboval, ide to takto


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Each c As Control In Controls
            If TypeOf c Is TextBox Then
                AddHandler c.Enter, AddressOf TextBox_Enter
                AddHandler c.Leave, AddressOf TextBox_Leave
            End If
        Next
    End Sub


    Private Sub TextBox_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs)
        DirectCast(sender, TextBox).BackColor = Color.Yellow
    End Sub

    Private Sub TextBox_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs)
        DirectCast(sender, TextBox).BackColor = Color.White
    End Sub

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Jde to daleko jednodušeji s pomocí jediného handleru a bez zbytečného cyklu:

Public Class Form1
  Private _lastTextBox As TextBox
  Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    'Nastavit na první TextBox (první podle TabOrder)
    _lastTextBox = TextBox1
  End Sub
  Private Sub TextBoxes_Enter(ByVal sender As Object, ByVal e As EventArgs) Handles TextBox1.Enter, TextBox2.Enter, TextBox3.Enter
    Dim currentTextBox = DirectCast(sender, TextBox)
    _lastTextBox.BackColor = SystemColors.Window
    currentTextBox.BackColor = Color.Yellow
    _lastTextBox = currentTextBox
  End Sub
End Class

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback