C# 文本框显示格式

C# 文本框显示格式,c#,winforms,textbox,formatting,C#,Winforms,Textbox,Formatting,我想在每组3位数字后加上“,”。例如:当我键入3000000时,文本框将显示3000000,但值仍然是3000000。 我尝试使用maskedtexbox,但有一个缺点是maskedtexbox显示的数字类似于,\uuuuuuuuuuuuuuuuu,使用String.Format int value = 300000 String.Format("{0:#,###0}", value); // will return 300,000 您可以像这样连接到OnKeyUp事件: private v

我想在每组3位数字后加上“,”。例如:当我键入3000000时,文本框将显示3000000,但值仍然是3000000。
我尝试使用maskedtexbox,但有一个缺点是maskedtexbox显示的数字类似于,\uuuuuuuuuuuuuuuuu,使用String.Format

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

您可以像这样连接到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;
                }
            }
        }

我希望这对您的场景可能会很好

 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;
    }
私有字符串文本
{
得到
{
返回文本;
}
设置
{
尝试
{
字符串温度=字符串为空;
for(int i=0;i如果(p>=48&&p请尝试将此代码添加到
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);

当然,不要忘记检查用户输入到文本框中的内容是否是有效的整数。

获取十进制值,然后进行设置

DecimalValue.ToString("#,#");

使用验证事件检查并重新格式化用户输入。