2011-08-05 9 views
1

可能性の重複:
数だけテキストボックス(WPF)

How do I get a TextBox to only accept numeric input in WPF?

以下のコードが正しくありません:

private void txtCode_PreviewTextInput(object sender, TextCompositionEventArgs e) 
    { 
     e.Handled = !AreAllValidNumericChars(e.Text); 



    } 
    private bool AreAllValidNumericChars(string str) 
    { 
     foreach (char c in str) 
     { 
      if (!Char.IsNumber(c)) return false; 
     } 

     return true; 
    } 

private void txtCode_PreviewTextInput(object sender, TextCompositionEventArgs e) 
    { 
     e.Handled = !AreAllValidNumericChars(e.Text); 

    } 
    bool AreAllValidNumericChars(string str) 
    { 
     bool ret = true; 
     if (str == System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator | 
      str == System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyGroupSeparator | 
      str == System.Globalization.NumberFormatInfo.CurrentInfo.CurrencySymbol | 
      str == System.Globalization.NumberFormatInfo.CurrentInfo.NegativeSign | 
      str == System.Globalization.NumberFormatInfo.CurrentInfo.NegativeInfinitySymbol | 
      str == System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator | 
      str == System.Globalization.NumberFormatInfo.CurrentInfo.NumberGroupSeparator | 
      str == System.Globalization.NumberFormatInfo.CurrentInfo.PercentDecimalSeparator | 
      str == System.Globalization.NumberFormatInfo.CurrentInfo.PercentGroupSeparator | 
      str == System.Globalization.NumberFormatInfo.CurrentInfo.PercentSymbol | 
      str == System.Globalization.NumberFormatInfo.CurrentInfo.PerMilleSymbol | 
      str == System.Globalization.NumberFormatInfo.CurrentInfo.PositiveInfinitySymbol | 
      str == System.Globalization.NumberFormatInfo.CurrentInfo.PositiveSign) 
      return ret; 

     int l = str.Length; 
     for (int i = 0; i < l; i++) 
     { 
      char ch = str[i]; 
      ret &= Char.IsDigit(ch); 
     } 

     return ret; 
    } 

 private override void txtCode_PreviewTextInput(object sender, TextCompositionEventArgs e) 
    { 
     char c = e.Text.ToCharArray().First(); 
     e.Handled = !(char.IsNumber(c) || char.IsControl(c)); 

    } 

と.....

問題:Ctrlキー+ Vコピー/貼り付け

正しいコードとは何ですか?

+1

たぶんhttp://stackoverflow.com/questions/1268552/how-do-i-get-a-textbox-to-only-accept-numeric-input-in-wpfは助けることができます。 – Troyen

+0

私はあなたが知りたいと思っているものはすべてこのリファレンスにあると信じています:http://karlhulme.wordpress.com/2007/02/15/masking-input-to-a-wpf-textbox/特に最後の部分を読んでください。 –

答えて

-1

これは数字のテキストボックスに使用したコードであり、正常に動作しています。

private void textBox1_PreviewTextInput(object sender, TextCompositionEventArgs e) 
{ 
    e.Handled = onlyNumeric(e.Text); 
} 

public static bool onlyNumeric(string text) 
{ 
    Regex regex = new Regex("^[0-9]*$"); //regex that allows numeric input only 
    return !regex.IsMatch(text); // 
} 
+0

OPタイトルにWPFを記述し、その例でC#を使用しました。 –

関連する問題