Salve a tutti!
qualcuno sa dirmi come posso fare affinchè una textbox sia predisposta al solo inserimento di un indirizzo IP?
quindi dovrà essere un'espressione del tipo xxx.xxx.xxx.xxx con valori validi (<=256) per ogni xxx?
Grazie in anticipo!
Salve a tutti!
qualcuno sa dirmi come posso fare affinchè una textbox sia predisposta al solo inserimento di un indirizzo IP?
quindi dovrà essere un'espressione del tipo xxx.xxx.xxx.xxx con valori validi (<=256) per ogni xxx?
Grazie in anticipo!
256 non e' un valore valido ...Originariamente inviato da bongi
... valori validi (<=256) ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
si certo
<256
cmq volevo solo fare un esempio di condizione
se non erro un'altra condizione è che il primo numero non può essere = 0
non esiste un controllo o un metodo "automatico"
Puoi usare una regular expression ...
Oppure leggi questo
http://www.codeproject.com/KB/miscct...drCtrlLib.aspx
anche se in C#, va bene per VB.NET ...
Per VB6 le cose sono diverse, ma non ho capito ... devi utilizzarlo in VB6 o VB.NET?
No MP tecnici (non rispondo nemmeno!), usa il forum.
sono in fase iniziale
ancora non ho deciso se usare vb6 o vb net ... sono scarsa in entrambi, forse mi trovo meglio con il vb6!
il fatto è che il programmino è veramente semplice ma per noi utile, così...
non conosco c#
come posso uilizzare il codice che ho trovato nel link che mi hai inviato?
se non esiste già un metodo, pensi che si possa risolvere la questione creando una funzione o è troppo complicato?
tra l'altro, ripensandoci, non è neanche vero che un indirizzo IP non possa iniziare con 0 perchè potrei scrivere 0.0.0.0 ... sono un po' confusa!
Allora, prima di pensare a questo problema, dovresti fare un'analisi piu' approfondita e decidere il linguaggio da scegliere ... Le cose cambiano parecchio (ovviamente) ...Originariamente inviato da bongi
sono in fase iniziale
ancora non ho deciso se usare vb6 o vb net ... sono scarsa in entrambi, forse mi trovo meglio con il vb6!
il fatto è che il programmino è veramente semplice ma per noi utile, così...
Se conosci VB.NET, non e' affatto difficile "convertirlo", anzi, e' intuitivo ...non conosco c#
come posso uilizzare il codice che ho trovato nel link che mi hai inviato?
Puoi tranquillamente pensare ad una funzione ...se non esiste già un metodo, pensi che si possa risolvere la questione creando una funzione o è troppo complicato?
E cosa rappresenterebbe un IP 0.0.0.0 ?tra l'altro, ripensandoci, non è neanche vero che un indirizzo IP non possa iniziare con 0 perchè potrei scrivere 0.0.0.0 ...
Sì ...sono un po' confusa!
No MP tecnici (non rispondo nemmeno!), usa il forum.
Ho provato a gestire l'inserimento dell'indirizzo IP con MaskedTextBox, ma è stato un disastro...
Probabilmente non è molto elegante, ma ho deciso di risolvere la questione in questo modo:
anzichè fare un'unica textbox, creo 4 textbox
alla digitazione controllo che vengano inseriti solo caratteri numerici (al massimo 3)
e al cambio di focus controllo che il contenuto sia >0 e <256
all'inserimento della 3a cifra il focus va direttamente nella textbox successiva
che ne dite?
il codice che ho creato è questo:
(txtIP1 txtIP2 txtIP3 txtIP4 sono le textbox relative all'indirizzo IP)
<code>
Private Sub txtIP1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtIP1.KeyPress
If Not IsNumeric(e.KeyChar) Then
e.KeyChar = ""
End If
End Sub
Private Sub txtIP2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtIP2.KeyPress
If Not IsNumeric(e.KeyChar) Then
e.KeyChar = ""
End If
End Sub
Private Sub txtIP3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtIP3.KeyPress
If Not IsNumeric(e.KeyChar) Then
e.KeyChar = ""
End If
End Sub
Private Sub txtIP4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtIP4.KeyPress
If Not IsNumeric(e.KeyChar) Then
e.KeyChar = ""
End If
End Sub
Private Sub txtIP1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtIP1.TextChanged
If Len(txtIP1.Text) > 0 Then
If (Int(txtIP1.Text) > 0 And Int(txtIP1.Text) < 256) Then
txtIP1.BackColor = Color.White
If Len(txtIP1.Text) = 3 Then
txtIP2.Focus()
End If
Else
txtIP1.Text.ToString()
txtIP1.Text = ""
MsgBox("Valore Inserito Non Valido")
txtIP1.Focus()
txtIP1.BackColor = Color.Yellow
End If
End If
End Sub
Private Sub txtIP2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtIP2.TextChanged
If Len(txtIP2.Text) > 0 Then
If (Int(txtIP2.Text) > 0 And Int(txtIP2.Text) < 256) Then
txtIP2.BackColor = Color.White
If Len(txtIP2.Text) = 3 Then
txtIP3.Focus()
End If
Else
txtIP2.Text.ToString()
txtIP2.Text = ""
MsgBox("Valore Inserito Non Valido")
txtIP2.Focus()
txtIP2.BackColor = Color.Yellow
End If
End If
End Sub
Private Sub txtIP3_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtIP3.TextChanged
If Len(txtIP3.Text) > 0 Then
If (Int(txtIP3.Text) > 0 And Int(txtIP3.Text) < 256) Then
txtIP3.BackColor = Color.White
If Len(txtIP3.Text) = 3 Then
txtIP4.Focus()
End If
Else
txtIP3.Text.ToString()
txtIP3.Text = ""
MsgBox("Valore Inserito Non Valido")
txtIP3.Focus()
txtIP3.BackColor = Color.Yellow
End If
End If
End Sub
Private Sub txtIP4_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtIP4.TextChanged
If Len(txtIP4.Text) > 0 Then
If (Int(txtIP4.Text) > 0 And Int(txtIP4.Text) < 256) Then
txtIP4.BackColor = Color.White
If Len(txtIP4.Text) = 3 Then
cmbProtocol.Focus()
End If
Else
txtIP4.Text.ToString()
txtIP4.Text = ""
MsgBox("Valore Inserito Non Valido")
txtIP4.Focus()
txtIP4.BackColor = Color.Yellow
End If
End If
End Sub
</code>
ora il mio problema è questo:
nelle textbox posso inserire solo numeri... ma se voglio cancellare quello che ho scritto? il mio codice non me lo permette!!
Grazie in anticipo dell'aiuto!
Giacché hai deciso di scriverlo in VB .NET, ti sarà utile sapere che la stessa routine di evento può essere riferita a più controlli. Quindi se modifichi
incodice:Private Sub txtIP1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtIP1.KeyPress
essa varrà per l'evento KeyPress di tutte e quattro le TextBox. Il nome della Sub è irrilevante.codice:Private Sub txtIP1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtIP1.KeyPress, txtIP2.KeyPress, txtIP3.KeyPress, txtIP4.KeyPress
Riguardo alla cancellazione, così come accetti che e.KeyChar sia numerico, puoi aggiungere come valore accettabile quello del tasto Backspace.
(Edit)
P.S. Rendi più leggibile il codice che posti indentandolo correttamente e racchiudendolo con gli appositi tag (#)
Grazie per il consiglio, non sapevo di poter utilizzare la stesso routine
però nel mio caso non penso di poterlo fare visto che faccio controlli differenti a seconda della textbox in cui mi trovo...
comunque, per quanto riguarda il backspace, avevo capito a livello teorico come fare, mi mancava ...la pratica!
ho trovato che il codice ASCII del backspace è 8 quindi penso di adottare questa soluzione (mi sembra che funzioni bene) per tutte le textbox sull'evento KeyPress
If Asc(e.KeyChar) <> 8 Then
If Not IsNumeric(e.KeyChar) Then
e.KeyChar = ""
End If
End If
PS: come si fa a mettere il codice tra tag ?!![]()