/ Validação / TextBox - C # - c #, winforms, validação, textbox

Validação de TextBox - C # - c #, winforms, validação, textbox

Eu estou tendo bastante dificuldade com meu c #Validação da caixa de texto do aplicativo. O problema é que a caixa de texto mencionada deve aceitar apenas valores decimais. Portanto, não deve haver letras ou outros símbolos além do símbolo "." O filtro de letras, eu posso manipular. Eu não sei exatamente como posso filtrar o número de "". que a caixa de texto deve aceitar. Se alguém tiver alguma ideia de como fazer isso, por favor, me dê uma ideia.

Muito obrigado :)

Respostas:

3 para resposta № 1

isso deve funcionar !!!

modificado para apenas uma casa decimal

    private void txtType_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Back || (e.KeyChar == (char)".") && !(sender as TextBox).Text.Contains("."))
{
return;
}
decimal isNumber = 0;
e.Handled = !decimal.TryParse(e.KeyChar.ToString(), out isNumber);
}

4 para resposta № 2
decimal value;
bool isValid = decimal.TryParse(textBox.Text, out value);

if (!isValid)
{
throw new ArgumentException("Input must be a decimal value");
}

1 para resposta № 3

Use a validação de regex:

^([0-9]*|d*.d{1}?d*)$

Este site tem uma biblioteca de validações de regex (incluindo numericamente relacionadas) que você achará útil:

http://regexlib.com/Search.aspx?k=decimal&c=-1&m=-1&ps=20


1 para resposta № 4

Apenas um pensamento: se você está monitorando as casas decimais, simplesmente mantenha uma bandeira de bool em seu controle para dizer "Eu já tive um ponto", pontos subseqüentes são inválidos.

Como alternativa, ao verificar as casas decimais, você pode usar Contains:

if (textbox.Text.Contains("."))

Além disso, revise este exemplo disponível no MSDN (NumericTextBox):

http://msdn.microsoft.com/en-us/library/ms229644(VS.80).aspx


0 para a resposta № 5

Use um MaskedTextBox em vez disso e defina a máscara para aceitar apenas decimais.