Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#] Condition -> int32 dans textbox

Sujet résolu
Anonyme
    28 juillet 2011 à 16:37:28

    Bonjour,

    Je sais que mon titre n'est pas très clair, mais je n'ai pas trouver mieux.
    Je code un mini logiciel en C#, WindowsForms, et j'ai une textbox dessus.

    Ce que j'aimerais faire, c'est que cette TextBox n'accepte que les "Int32" (Que les chiffres, pas les lettres)
    Pour cela, j'ai essayer de nombreux codes, mais aucun n'a marcher.

    if(LEVEL.Text == int)
    {
    // Executé ça
    }
    // Ou
    if(LEVEL.GetType() == int)
    {
    return;
    }
    


    Avez-vous une idée, pour la restriction ? Pour que je ne puisse accepter que les chiffres ?

    Cordialement,
    Shyro
    • Partager sur Facebook
    • Partager sur Twitter
      28 juillet 2011 à 16:55:23

      De toute façon ta textbox va contenir fondamentalement du texte (comme son nom l'indique). Tu pourras toujours après parser ce texte en un int avec int.parse .

      En fait tu veux que l'utilisateur ne puisse rentrer que des chiffres, je te laisse regarder du coté de MaskedTextBox.
      • Partager sur Facebook
      • Partager sur Twitter
      Zeste de Savoirbépocode minimal  — Ge0 <3
        28 juillet 2011 à 18:01:09

        Bonjour,

        Plusieurs solutions :
        - Soit vérifier après saisie la validité du texte entré. Dans ce cas, il faudra faire un int.TryParse (ou int.Parse suivant la façon dont tu gères ta popote) sur ton textbox.Text.
        - Soit passer par un MaskedTextBox comme l'a proposé simbilou
        - Soit gérer l'acceptation ou non de la touche qui vient d'être pressée avec les events KeyPress / KeyDown etc. sur ta textbox.
        • Partager sur Facebook
        • Partager sur Twitter
          28 juillet 2011 à 18:12:43

          Ou alors tu utilises un contrôle NumericUpDown, c'est fait pour saisir des nombres.

          Au passage:

          if(LEVEL.Text == int)
          

          LEVEL.TEXT représente une string, et tu ne peux pas comparer une string avec "int" (qui ne peut d'ailleurs être comparé à rien du tout, comme tous les mots-clés).

          if(LEVEL.GetType() == int)
          

          LEVEL.GetType() renvoie le type de LEVEL, en l'occurence ici le type TextBox (qui n'est pas plus comparable avec "int").

          Quelques exemples de comparaisons valides, mais pas très utiles:
          LEVEL.Text.GetType() == typeof(string) // toujours vrai
          LEVEL.Text is string // toujours vrai
          LEVEL.Text.GetType() == typeof(int) // toujours faux
          LEVEL.Text is int // toujours faux
          LEVEL is TextBox // toujours vrai
          LEVEL is Control // toujours vrai car TextBox hérite de Control
          LEVEL is int // toujours faux
          

          Un peu plus utile dans ton cas:
          int valeur;
          bool isInteger = int.TryParse(LEVEL.Text, out valeur); // renvoie true si LEVEL.Text représente un entier
          
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            28 juillet 2011 à 23:13:02

            Bonsoir,

            Merci de vos réponses, ça marche super bien :)
            • Partager sur Facebook
            • Partager sur Twitter

            [C#] Condition -> int32 dans textbox

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown