Essa semana mostro como criar uma maskeditbox a partir de qualquer controle de entrada de dados.

Esse código pode ser usado para qualquer aplicação que você precise de uma maskeditbox e seja necessária uma mascara muito especifica.

[sections] [section title=”C#”]

String strMaskEdit = "00:00:00";
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
var textBox = sender as TextBox; // Aqui coloque o tipo de controle a ser manipulador

if (textBox == null) return;

if (e.KeyChar == ‘\b’) return; // caso backspace

if (e.KeyChar == ‘\r’ || e.KeyChar == ‘\n’)
{
// pode chama outro metodo ao se teclar enter [metodo de validação
e.Handled = true;
return;
}
// somente numeros
if ((e.KeyChar != ‘0’ && e.KeyChar != ‘1’ && e.KeyChar != ‘2’ &&
e.KeyChar != ‘3’ && e.KeyChar != ‘4’ && e.KeyChar != ‘5’ &&
e.KeyChar != ‘6’ && e.KeyChar != ‘7’ && e.KeyChar != ‘8’ &&
e.KeyChar != ‘9’))
{
e.Handled = true;
return;
}
int x = textBox.SelectionStart;
textBox.Text = textBox.Text.Remove(textBox.SelectionStart, textBox.SelectionLength);
textBox.SelectionStart = x;
textBox.MaxLength = strMaskEdit.Length;

if (strMaskEdit!= "")
{
// Suppress the typed character.
e.Handled = true;

char[] newText = (textBox.Text).ToCharArray();

string newText2 = "";

if (newText.Length >= textBox.MaxLength)
{
textBox.Text = textBox.Text.Substring(0, textBox.MaxLength);
return;
}

// Loop through the mask, adding fixed characters as needed.
// If the next allowed character matches what the user has
// typed in (a number or letter), that is added to the end.
bool finished = false;
for (int i = textBox.SelectionStart; i < strMaskEdit.Length; i++)
{
switch (strMaskEdit[i].ToString(CultureInfo.InvariantCulture))
{
case "0":
// Allow the keypress as long as it is a number.
if (Char.IsDigit(e.KeyChar))
{
newText2 += Convert.ToChar(e.KeyChar.ToString(CultureInfo.InvariantCulture));
finished = true;
break;
}
// Invalid entry; exit and don’t change the text.
return;
case ".":
// Allow the keypress as long as it is a letter.
if (Char.IsLetter(e.KeyChar))
{
newText2 += Convert.ToChar(e.KeyChar.ToString(CultureInfo.InvariantCulture));
finished = true;
break;
}
// Invalid entry; exit and don’t change the text.
return;
default:
// Insert the mask character.
newText2 += Convert.ToChar(strMaskEdit[i]);
x++;
break;
}
if (finished)
{
break;
}
}
// Update the text.
textBox.Text = new string(newText);
textBox.Text = textBox.Text.Insert(textBox.SelectionStart, newText2);
textBox.SelectionStart = x + 1;
}
}

[/section] [/sections]
Obrigado e até o próximo post.

DATEK Tecnologia Eletrônica
[C#] Criando uma mascara personalizada em textbox
Tags:                         

Deixe uma resposta

%d blogueiros gostam disto: