none
interdire la saisie des chiffres dans un textbox donne RRS feed

  • Question

  • je suis entrain de bosser sur un truc qui me demande plein des codes et au niveau ou je suis, j'aimerais interdire la saisie des chiffres dans un textbox, aussi interidre la saisie des lettres dans texbox
    mardi 22 mars 2011 00:55

Réponses

  •  

    Bonjour Arnold

    pour interdire la saisie de lettres (et uniquement les lettres), vous pouvez utiliser l'évenement KeyPress de la textbox :

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
     if (!char.IsControl(e.KeyChar) 
     && !char.IsDigit(e.KeyChar) 
     && e.KeyChar != ',')
     {
     e.Handled = true;
     }
    
     // autorise à entrer une virgule ',' pour les décimales (et une seule)
     if (e.KeyChar == ',' 
     && (sender as TextBox).Text.IndexOf(',') > -1)
     {
     e.Handled = true;
     }
    }


    pour interdire la saisie de chiffres (et uniquement les chiffres), 

     

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
     if (!char.IsControl(e.KeyChar) 
     && char.IsDigit(e.KeyChar))
     {
     e.Handled = true;
     }
    
    }
    

     

    pour rappel , sur la propriété Handled :

    Handled=true annule l'événement KeyPress. (source: msdn)

    et sur la méthode char.IsControl:

    true si c est un caractère de contrôle ; sinon, false. (source : msdn)

    Les caractères de contrôle sont des caractères de mise en forme non imprimables, tels qu'ACK, BEL, CR, FF, LF et VT. La norme Unicode assigne les points de code suivants aux caractères de contrôle : de \U0000 à \U001F, \U007F et de \U0080 à \U009F. Selon la norme Unicode, ces valeurs seront interprétées comme des caractères de contrôle, sauf si leur utilisation est définie d'une autre manière par une application. Les caractères de contrôle valides sont des membres de la catégorie UnicodeCategory.Control.


    Cdt,

    Xavier Averbouch
    Avanade , FRANCE
    If a post answers your question, please click "Mark As Answer" on that post and "Vote as Helpful".




    mardi 22 mars 2011 06:20

Toutes les réponses

  •  

    Bonjour Arnold

    pour interdire la saisie de lettres (et uniquement les lettres), vous pouvez utiliser l'évenement KeyPress de la textbox :

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
     if (!char.IsControl(e.KeyChar) 
     && !char.IsDigit(e.KeyChar) 
     && e.KeyChar != ',')
     {
     e.Handled = true;
     }
    
     // autorise à entrer une virgule ',' pour les décimales (et une seule)
     if (e.KeyChar == ',' 
     && (sender as TextBox).Text.IndexOf(',') > -1)
     {
     e.Handled = true;
     }
    }


    pour interdire la saisie de chiffres (et uniquement les chiffres), 

     

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
     if (!char.IsControl(e.KeyChar) 
     && char.IsDigit(e.KeyChar))
     {
     e.Handled = true;
     }
    
    }
    

     

    pour rappel , sur la propriété Handled :

    Handled=true annule l'événement KeyPress. (source: msdn)

    et sur la méthode char.IsControl:

    true si c est un caractère de contrôle ; sinon, false. (source : msdn)

    Les caractères de contrôle sont des caractères de mise en forme non imprimables, tels qu'ACK, BEL, CR, FF, LF et VT. La norme Unicode assigne les points de code suivants aux caractères de contrôle : de \U0000 à \U001F, \U007F et de \U0080 à \U009F. Selon la norme Unicode, ces valeurs seront interprétées comme des caractères de contrôle, sauf si leur utilisation est définie d'une autre manière par une application. Les caractères de contrôle valides sont des membres de la catégorie UnicodeCategory.Control.


    Cdt,

    Xavier Averbouch
    Avanade , FRANCE
    If a post answers your question, please click "Mark As Answer" on that post and "Vote as Helpful".




    mardi 22 mars 2011 06:20
  • super ! merci  a tous ceux qui ont le problème que moi n'hésitez pas de copier ce code.
    jeudi 2 juin 2011 03:06
  • Salut,

    j'ai du également programmer cela pour mon programme.

    Ici en Suisse, les romands utilisent la touche . comme décimale alors que les Suisse-allemands utilisent la ,

    Voici mon code qui permet d'utiliser le séparateur décimal du système.

    Je vois maintenant que j'aurais pu utiliser le ISDigit c'est beaucoup mieux donc ne reprenez pas cette partie du code.

    Si ça peut vous rendre service...

     

    protected override void OnKeyDown(KeyEventArgs e)
    {
      e.SuppressKeyPress = false;
      if (_IsNumeric)
      {
        // allow only numeric and Ctrl-Key and .
        if (
          (e.KeyValue >= 48 && e.KeyValue <= 57) || 
          (e.KeyValue >= 96 && e.KeyValue <= 105) ||
          (e.KeyCode == Keys.Home || e.KeyCode == Keys.End || 
            e.KeyCode == Keys.Left || e.KeyCode == Keys.Right || 
            e.KeyCode == Keys.Delete || e.KeyCode == Keys.Back) ||
          (e.KeyCode == Keys.Decimal && !Text.Contains(CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator)) ||
          (e.Control && (e.KeyCode == Keys.C || e.KeyCode == Keys.V || e.KeyCode == Keys.X))) e.SuppressKeyPress = false;
        else e.SuppressKeyPress = true;
    
      }
      base.OnKeyDown(e);
    }
    

    le code à retenir est donc le suivant :

    !Text.Contains(CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator
    

    Bonne soirée

    mardi 7 juin 2011 18:26