Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [VB] Controllo anticipato del testo in un una TextBox()

    Vorrei controllare mentre sto' scrivendo, se inserisco caratteri non validi, io ho creato questo codice:

    PS. nel mio esempio il carattere non valido e' = ' @ '

    --------------------------------------------
    Private Sub txtEditSubCat_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtEditSubCat.TextChanged

    Dim ItemControl As String = txtEditSubCat.Text
    If ItemControl = "@" Then
    Dim result As Integer = MessageBox.Show("E' stato inserito il carattere '@', verra sostituito con '_', vuoi proseguire?", "Attenzione!", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2)

    If result = DialogResult.OK Then
    Dim Item As String = Replace(ItemControl, "@", "_")
    txtEditSubCat.Text = Item
    End If
    End If
    End Sub
    --------------------------------------------

    Nel momento che inserisci il primo carattere, se e' una ' @ ', parte il messaggio, se dici ' OK ', elimina la ' @ ' e sostituisce con ' _ ', e te lo modifica subito pure nella TextBox().

    Solo che funziona solo se il primo carattere e' una ' @ ', ma se il carattere non valido viene inserito per secondo in poi non lo controlla piu', dato il tipo di "Handles":

    Handles txtEditSubCat.TextChanged che appunto e' un "TextChanged" ,

    ho provato con altri Handles, ma niente

    poi ho provato modificando pure il "System.EventArgs" in "System.Windows.Forms.KeyEventArgs" e usando altri Handles per la tastiera , ma niente.

    Mi potete dire come fare per tenere attivo il controllo per tutta la durata della digitazione nella TextBox() ???

  2. #2

    Ecco un esempio

    Probabilmente stai usando VB.net che è leggermente diverso dalla versione VB6 che uso io. Comunque ti mando questo esempio che dovrebbe aiutarti.
    Al posto di gestire l'evento TextChange usa l'evento KeyPress. Tra i valori restituiti dovrebbe esserci il codice Ascii del tasto premuto.

    Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = Asc("@") Then
    If MsgBox("Carattere non valido!!" & vbCrLf & "Lo vuoi sostituire con '_'?", vbYesNo, "ATTENZIONE:") = vbYes Then
    KeyAscii = Asc("_")
    Else
    KeyAscii = vbNull
    End If
    End If
    End Sub

    Spero di averti aiutato, fammi sapere...
    Ciao!!
    lupusinfabula

    Programmatore VB, ASP, Delphi.

  3. #3
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    hai scritto troppo codice per i miei gusti :gren:

    codice:
    Private sub TEXTBOX_TextChanged ...
       Dim str As String
       str = textbox.Text
       If str.IndexOf("@") <> -1 Then
          MsgBox("cambio il valore")
          textbox.Text = Replace(textbox.Text, "@", "_")
          textbox.SelectionStart = textbox.TextLength
       End If
    end sub

  4. #4
    Non funziona e non so come posso modificarlo, ho deciso di fare il controllo classico mel bottone di invio, grazie, ciao!

  5. #5
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    COME NON FUNZIONA?

    Da me funziona che è una meraviglia, non è che hai fatto copia e incolla anche dell'evento? Hai visto che ci sono i puntini? Manca la parte che ti genera l'ambiente di sviluppo

  6. #6
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    codice:
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            Dim str As String
            str = TextBox1.Text
            If str.IndexOf("@") <> -1 Then
                MsgBox("cambio il valore")
                TextBox1.Text = Replace(TextBox1.Text, "@", "_")
                TextBox1.SelectionStart = TextBox1.TextLength
            End If
    End Sub
    Impossibile che non ti funziona, controlla bene !

  7. #7
    Scusami!!!
    sono rimasto indietro di un post, non dicevo a te!!!

    E' vero funziona benissimo, grazie mille, usero questo, ancora grazie pure per Boldan!!!

  8. #8
    Originariamente inviato da darkblOOd
    codice:
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            Dim str As String
            str = TextBox1.Text
            If str.IndexOf("@") <> -1 Then
                MsgBox("cambio il valore")
                TextBox1.Text = Replace(TextBox1.Text, "@", "_")
                TextBox1.SelectionStart = TextBox1.TextLength
            End If
    End Sub

    E per fargli vagliare piu' caratteri???

    "@, %, &, £, ?, ", |, !, #, §, ^, /, \, (, ), ;, :, ., ç, °, €, etc..."

    con un bel codice compatto???

  9. #9
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    puoi includere degli altri if then

  10. #10
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    potresti anke fare il controllo sul keypress usando e.keycode mi pare e mettendo e.handled = true prima della fine della sub


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.