文本框显示格式

我想在每组3位数之后添加“,”。 例如:当我输入3000000时,文本框将显示3,000,000,但值仍为3000000。
我试图使用maskedtexbox,有一个缺点,就是maskedtexbox显示了一个像_ ,__ __的数字

尝试将此代码添加到TextBox KeyUp事件处理程序

 private void textBox1_KeyUp(object sender, KeyEventArgs e) { if (!string.IsNullOrEmpty(textBox1.Text)) { System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("en-US"); int valueBefore = Int32.Parse(textBox1.Text, System.Globalization.NumberStyles.AllowThousands); textBox1.Text = String.Format(culture, "{0:N0}", valueBefore); textBox1.Select(textBox1.Text.Length, 0); } } 

是的,它会更改存储在texbox中的值,但是只要您需要实际数字,就可以使用以下行从文本中获取它:

 int integerValue = Int32.Parse(textBox1.Text, System.Globalization.NumberStyles.AllowThousands); 

当然不要忘记检查用户输入文本框的内容实际上是一个有效的整数。

使用String.Format

 int value = 300000 String.Format("{0:#,###0}", value); // will return 300,000 

http://msdn.microsoft.com/en-us/library/system.string.format.aspx

这可能适用于我希望的场景。

  private string text { get { return text; } set { try { string temp = string.Empty; for (int i = 0; i < value.Length; i++) { int p = (int)value[i]; if (p >= 48 && p <= 57) { temp += value[i]; } } value = temp; myTxt.Text = value; } catch { } } } private void digitTextBox1_TextChanged(object sender, EventArgs e) { if (myTxt.Text == "") return; int n = myTxt.SelectionStart; decimal text = Convert.ToDecimal(myTxt.Text); myTxt.Text = String.Format("{0:#,###0}", text); myTxt.SelectionStart = n + 1; } 

在这里,myTxt =你的文本框。 设置下面给出的Textchanged事件,并在post中创建属性文本。

希望能帮助到你。

您可以像这样连接到OnKeyUp事件:

  private void textBox1_KeyUp(object sender, KeyEventArgs e) { if (!(e.KeyCode == Keys.Back)) { string text = textBox1.Text.Replace(",", ""); if (text.Length % 3 == 0) { textBox1.Text += ","; textBox1.SelectionStart = textBox1.Text.Length; } } } 

获取十进制值然后设置

 DecimalValue.ToString("#,#");