Lost Focus

di il
3 risposte

Lost Focus

Ciao a tutti

Ho creato la classe derivata CTextBox per aggiungere controlli su la digitazione, alfabetico, alfanumerico e numerico

Inoltre volevo gestire il tab tramite gli eventi LostFocus e GotFocus

Public Class CTextBox
    Inherits TextBox

    Protected Overrides Sub OnKeyPress(e As KeyPressEventArgs)
        'Protected Overridable Sub OnKeyDown(e As KeyEventArgs)
        Dim keyAscii As Integer = Asc(e.KeyChar)
        '       Dim sss As String = Me.Text
        Select Case Tipocampo
            Case 1
                If Not TCaratt(keyAscii, tcc.Alfabetico) Then
                    e.KeyChar = "" : Exit Sub
                End If
            Case 2
                Exit Sub
            Case 3     'Numerico
                If Not TCaratt(keyAscii, tcc.Numerico) Then
                    e.KeyChar = "" : Exit Sub
                End If       
        End Select
        MyBase.OnKeyPress(e) 'remeber to call this if you need default keypress handling
    End Sub
    
    Protected Overridable Sub OnGotFocus(e As KeyEventArgs)
        If SelectOnEntry Then
            Me.SelectOnEntry = True
        End If
    End Sub
    
    Protected Overridable Sub OnlostFocus(e As KeyEventArgs)
        If _NonVuoto = True Then
            If Me.TextLength = 0 Then
                If ADefault Then
                    Me.Text = ADefault
                Else
                    MsgBox("digitare campo")
                    Me.Focus()
                End If
            End If
        End If
       
    End Sub
    
    Public Sub New()
        MyBase.New
    End Sub

  
End Class

Il TAB  non viene rilevato e nemmeno LostFocus e GotFocus

L'evento LostFocus  mi serve per testare il campo in uscita, GotFocus mi permette di selezionare il campo in ingresso

C'è una segnalazione  B40005 ma non capisco come risolvere

Come posso fare?

Franco

3 Risposte

  • Re: Lost Focus

    12/01/2026 - Frankq ha scritto:

    Il TAB  non viene rilevato e nemmeno LostFocus e GotFocus

    Come "rilevi" questa condizione? Hai messo un breakpoint?

    12/01/2026 - Frankq ha scritto:

    L'evento LostFocus  mi serve per testare il campo in uscita, GotFocus mi permette di selezionare il campo in ingresso

    A giudicare dal pezzo di codice che hai scritto, che riporto di seguito, non è chiaro cosa tu voglia fare, perché stai impostando a True qualcosa che è già True:

            If SelectOnEntry Then
                Me.SelectOnEntry = True
            End If
  • Re: Lost Focus

    12/01/2026 - Frankq ha scritto:

    Protected Overridable Sub OnGotFocus(e As KeyEventArgs)

    Protected Overridable Sub OnlostFocus(e As KeyEventArgs)

    Oltre a quanto detto da Alka, se non ricordo male, gli eventi focus non definiscono KeyEventArgs, ma EventArgs.

    Il problema B40005, infatti potrebbe essere la discrepanza sulla firma della routine di evento.

    E poi, probabilmente converrebbe usare gli eventi OnEnter e OnValidating, per evitare di scatenare un loop di eventi.

    Inoltre usando questi eventi si potrebbe effettuare e.Cancel = True, nel caso in cui ciò che si digita sul controllo non dovesse andare bene

    TheTruster

  • Re: Lost Focus

    Ciao

    @Alka

    Esatto ho messo u punto di debug, ma il prg non passa di lì

    Il codice che mi hai segnalato è un residuo di precedenti prove

    @TheTruster

    Se metto EventArgs mi va in errore

    il codice B40005  dice:OnLostFocus nasconde un metodo sottoponibile a override nel class di base

    Control. Per eseguire l'override del metodo di base quest'ultimo deve essere dichiarato  come

    Overrides

    come si fà questa dichiarazione?

    Franco

    PS.  La routine Keypress  mi controlla la validità di quanto ho scritto, ma io vorrei sapere quando il campo perde il focus

    Ad esempio se nel campo Comune và scritto il comune di appartenenza ma il 90% delle volte è "Firenze" vedendo che il campo è vuoto metto "Firenze"

Devi accedere o registrarti per scrivere nel forum
3 risposte