7
votes

Validation-textboxes permettant uniquement des décimales

J'utilise le code suivant pour la validation de la zone de texte.

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = SingleDecimal(sender, e.KeyChar);
}

public bool SingleDecimal(System.Object sender, char eChar)
{
    string chkstr = "0123456789.";
    if (chkstr.IndexOf(eChar) > -1 || eChar == Constants.vbBack) 
    {
        if (eChar == ".") 
        {
            if (((TextBox)sender).Text.IndexOf(eChar) > -1) 
            {     
                return true;
            }
            else 
            {         
                return false;  
            }
        }   
        return false;
     }
     else 
     {
         return true;  
     }
}


0 commentaires

10 Réponses :


0
votes

ici un code de mon application. Il gère un cas de plus, comme le fera de la sélection

const string SIGNED_FLOAT_KEY_REGX = @"^[+-]?[0-9]*(\.[0-9]*)?([Ee][+-]?[0-9]*)?$";
const string SIGNED_INTEGER_KEY_REGX = @"^[+-]?[0-9]*$";

const string SIGNED_FLOAT_REGX = @"^[+-]?[0-9]*(\.[0-9]+)?([Ee][+-]?[0-9]+)?$";
const string SIGNED_INTEGER_REGX = @"^[+-]?[0-9]+$";


0 commentaires


21
votes

Voici le code que j'utiliserais ...

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    // allows 0-9, backspace, and decimal
    if (((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 46))
    {
        e.Handled = true;
        return;
    }

    // checks to make sure only 1 decimal is allowed
    if (e.KeyChar == 46)
    {
        if ((sender as TextBox).Text.IndexOf(e.KeyChar) != -1)
            e.Handled = true;
    }
}


1 commentaires

Je reçois une référence d'objet non définie sur une instance d'objet.



1
votes

Créer un composant hérité de la zone de texte et utilisez ce code:

    protected override void OnKeyPress(KeyPressEventArgs e)
    {
        if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != '.')
        {
            e.Handled = true;
        }

        // only allow one decimal point
        if (e.KeyChar == '.' && Text.IndexOf('.') > -1)
        {
            e.Handled = true;
        }

        base.OnKeyPress(e);
    }


0 commentaires

1
votes

Voici une version VB.net pour la réponse de @ éclipsed4utoo

If (((Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57) And Asc(e.KeyChar) <> 8 And Asc(e.KeyChar) <> 46)) Then
    e.Handled = True
    Exit Sub
End If

' checks to make sure only 1 decimal is allowed
If (Asc(e.KeyChar) = 46) Then
    If (sender.Text.IndexOf(e.KeyChar) <> -1) Then
        e.Handled = True
    End If
End If


0 commentaires

1
votes

Ce code pour les décimales. Si vous souhaitez utiliser un flotteur également, vous utilisez simplement un double instant INT Et il sera supprimer des derniers cahoteurs automatisés xxx


0 commentaires

0
votes

Je crois que c'est la solution parfaite car elle limite non seulement le texte à des chiffres, seulement un signe de premier plan, et un seul point décimal, mais permet de remplacer le texte sélectionné s'il contient un point décimal. Le texte sélectionné ne peut toujours pas être remplacé par un point décimal s'il existe un point décimal dans le texte non sélectionné. Il permet un signe moins si c'est le premier caractère ou si le texte entier est sélectionné. XXX


0 commentaires

3
votes

Vous pouvez faire une méthode pour vérifier s'il s'agit d'un numéro.

au lieu de vérifier le . en tant que séparateur décimal, vous devez l'obtenir à partir de actuelCulture objet Il pourrait s'agir d'un autre caractère en fonction de l'endroit où vous êtes dans le monde. xxx

alors vous pouvez appeler la méthode dans l'événement keypress du Textbox : xxx


0 commentaires

0
votes

Voici une version VB.NET qui permet une figure décimale négative, prévenir la copie et la pâte tout en veillant à ce que le panneau négatif ne soit pas au milieu du texte ou du point décimal non au début du texte

Numérique (TextControl en tant qu'objet, E comme keyresseventargs) xxx


0 commentaires

0
votes

Essayez ceci avec ASP: RegularexpressionValidator contrôleur xxx


0 commentaires