2012-08-03 84 views
0

在一个windows窗体中,我有一个文本框,我把数量,例如我会键入18369.25,然后按Enter键,文本框应格式化为:18 369,25
该怎么办?在一个文本框中输入一个数字在回车键上按

+0

你看了看string.Format函数。 – MethodMan 2012-08-03 15:18:17

+0

是的:var s = String.format(format,args);我需要知道如何获得上面的格式以及Enter键使用哪个事件。 – 2012-08-03 15:21:36

+1

var value = textbox.Text; String.Format({0:## ###,##},value);尝试这样的东西..也谷歌string.formatting – MethodMan 2012-08-03 15:22:27

回答

1

订阅文本框的KeyPress事件类似于下面的一个事件处理程序:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (e.KeyChar == '\r') 
    { 
     decimal value; 
     if (decimal.TryParse(
      textBox1.Text, 
      NumberStyles.Any, 
      CultureInfo.InvariantCulture, 
      out value)) 
     { 
      textBox1.Text = value.ToString(
       "### ### ##0.00", 
       CultureInfo.InvariantCulture).TrimStart().Replace(".", ","); 
     } 
    } 
} 
+0

这适用于整数值:123456789变成1 234 567,89这很好,但是当我输入123456.25它不会改变。 – 2012-08-03 15:35:59

+0

您使用的是decimal.TryParse方法吗?这个对我有用。 – Dan 2012-08-03 15:39:40

+0

我还可以问为什么这种格式(18 369,25)?我从来没有见过它。 – Dan 2012-08-03 15:42:32

0

我做了一些expiriments,但似乎没有工作。所以我提出了这个解决方案。我知道它不是最好的,但至少它的工作(你至少需要什么):

private void textBox1_KeyUp(object sender, KeyEventArgs e)   
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      string s = textBox1.Text; 
      if (s.Contains('.')) 
      { 
       string[] arr = s.Split('.'); 
       decimal dec = decimal.Parse(arr[0]); 
       textBox1.Text = string.Format("{0},{1}", dec.ToString("## ###"), arr[1]); 
      } 
     } 
    } 

如果您有任何其他要求,请让我知道。 bye

+0

这是工作时,我键入十进制值,而不是当我输入整数,谢谢米蒂亚。 – 2012-08-03 16:26:51

相关问题