2015-08-08 2 views
0

Как сделать текстовое поле xaml в silverlight принимать только числа с точностью до одной десятичной запятой. Я попробовал ответы в этом вопросе How to make a textBox accept only Numbers and just one decimal point in Windows 8. Но это не сработало. Как я могу это сделать ?Как сделать текстовое поле xaml в silverlight принимать только числа с точностью до одной десятичной точки

+0

Можете ли вы поставить ваш материал для xaml и cs? –

ответ

1

Вы можете написать функцию, как это,

txtDiscount.KeyDown += new KeyEventHandler(EnsureNumbers); 

// Метод позволяет только цифры,

void EnsureNumbers(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Tab) 
     { 
      return; 
     } 
     bool result = EnsureDecimalPlaces(); 
     if (result == false) 
     { 
      var thisKeyStr = ""; 
      if (e.PlatformKeyCode == 190 || e.PlatformKeyCode == 110) 
      { 
       thisKeyStr = "."; 
      } 
      else 
      { 
       thisKeyStr = e.Key.ToString().Replace("D", "").Replace("NumPad", ""); 
      } 
      var s = (sender as TextBox).Text + thisKeyStr; 
      var rStr = "^[0-9]+[.]?[0-9]*$"; 
      var r = new Regex(rStr, RegexOptions.IgnoreCase); 
      e.Handled = !r.IsMatch(s); 
     } 
     else 
     { 
      e.Handled = true; 
     } 
    } 

Способ обеспечить только 1 десятичную,

bool EnsureDecimalPlaces() 
    { 

     string inText = txtDiscount.Text; 
     int decPointIndex = inText.IndexOf('.'); 
     if (decPointIndex < 1 || decPointIndex == 1) 
     { 
      return false; 
     } 
     else 
      return true; 
    } 
+0

Как я могу использовать эту функцию для нескольких текстовых полей. Там в любом случае ? – geo

+0

вызовите функцию в событии с измененным текстом этих полей – Sajeetharan

+0

, поэтому мне нужно установить переменную intext в ((текстовое поле) отправителя) .Text? – geo

Смежные вопросы