2012-08-03 75 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

相關問題