Maschere di input per txtbox

giovedì 06 maggio 2004 - 14.55

betangel Profilo | Newbie

ciao a tutti..
sto giochicchiando con forms di vb .net
volevo sapere se esiste la possibilita' di impostare ad una textbox una maschera di input come si fa in access..
ovvero io o una var di 4cifre e vorrei formattarle tipo xx,xx gia' in fase di inseriemento (insomma come faceva access...)
grazie mille!!
ciao@

Brainkiller Profilo | Guru

Ciao,
quello che vuoi realizzare è un masked edit control come esisteva in Visual Basic 6.0 che ti permette di definire una maschera di inserimento.
Attualmente non è disponibiel un controllo di questo tipo in VS.NET. Sarà disponibile in Whidbey (ossia VS.NET 2005) perchè era un oggetto molto richiesto da tutti.

Per ora puoi provare a referenziare il componente OCX masked edit di vb6 oppure puoi crearti un controllo custom e personalizzi il suo compotramento in base alle tue esigenze.

ciao
david

betangel Profilo | Newbie

grazie mille...
in effetti mi sembrava che qs net 2003 fosse un po' incompleto..
aspettiamo con ansia qs 2005!!

scusa sai mica dirmi il nome dell'ocx di vb6? grazie ancora..
ciao!!

alextyx Profilo | Expert

Devi cliccare su:
Progetto ---> Aggiungi riferimento ----> (nella scheda .COM) Microsoft Masked Edit Control 6.0
Però....ha i suoi contro! Non puoi renderlo ReadOnly come una normale text.box e, almeno finora, nn sono mai riuscito ad intercettare i tasti prima che se li prendesse lui, nonostante il KeyPreview del Form. Non dare per scontato di sapere cosa significa la sua proprietà Text. Prova a vedere anche cosa ti restituisce la sua proprietà CtlText. Il più delle volte sarà quella che dovrai usare laddove avresti pensato di usare la proprietà Text!
Buon lavoro, ....ma valuta la possibilità di usare il codice x conformarti una normale TextBox secondo le tue esigenze!

pecos81 Profilo | Junior Member

Io con queste sub gestisco l'immissione di un orario nella txtora

Private Sub Txtora_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtOra.KeyPress

e.Handled = True 'Cancel the Keypress
'Chr(&H8) = BACKSPACE

If e.KeyChar = ":" Then
If InStr(TxtOra.Text, ":") = False Then
e.Handled = False 'Resume keypress if condition is true
End If
End If

If e.KeyChar = Chr(&H8) Or IsNumeric(e.KeyChar) Then
e.Handled = False 'Resume keypress if condition is true
End If
If e.KeyChar <> Chr(&H8) Then
If TxtOra.TextLength = 2 Or TxtOra.TextLength = 5 Then
TxtOra.AppendText(".")
End If
End If
End Sub

Private Sub Txtora_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxtOra.TextChanged
Dim a As Integer
Dim b As Integer
Try
If TxtOra.TextLength = 5 Then
a = TxtOra.Text.Substring(0, 2)
b = TxtOra.Text.Substring(3, 2)
If a <= 23 Then
If b <= 59 Then
CmdOK.Enabled = True
CmdOK.Focus()
Else
MessageBox.Show("Imposta un orario valido", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Hand)
Exit Sub
End If
Else
MessageBox.Show("Imposta un orario valido", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Hand)
Exit Sub
End If
Else
CmdOK.Enabled = False
End If
Catch exc As Exception
Errore(exc)
End Try
End Sub

trinity Profilo | Guru

Non utilizzate i COM in vbnet non ve li consiglio. Per formattare un textbox utilizzate un codice di formattazione corretto nell'evento Leave che in vb6 rappresenta Lostfocus.

Esempio per formattare una textbox per inserire un valore in EURO faccio questo tipo di procedura:

Dim prezzo As Double = Me.TextBox1.Text
Me.TextBox1.Text = Format(prezzo, "#,##0.00")

spero che vi potrà essere utilie.

Ciao
Fabio

betangel Profilo | Newbie

ciao!
la soluzione e' stata una via di mezzo fra i vs consigli..
nel senso che in effetti a me serviva proprio la maschera di input piuttosto che la formattazione per esempio sul lostfocus (o leave), anche perche' cosi i dati inseriti non subirebbero modifiche (formattando invece le stringhe cambiano...)
ma cmq ho trovato una soluzione di compromesso eheh
Grazie a tutti..
per essere uno forum "giovane" e' veramente FANTASTICO!!!
CIAO
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5