1

可能是我的问题似乎不是一个好问题,但这里是描述:我正在以一种形式创建一个应用程序我有一个文本框正在接受用户的输入这是我的代码

private void Form1_Load(object sender, EventArgs e)
{
    textBox1.Text = string.Format("{0:0.##}", "0.00");
}

这将在页面加载时的文本框中显示值:0.00 现在,如果我点击键盘的退格按钮然后

if (e.KeyChar.ToString() == ".")
{
    e.Handled = true;
    int b = textBox1.Text.LastIndexOf("00");
    textBox1.SelectionStart = b;
}
else
{
    string abc = "0";
    string a = textBox1.Text.TrimStart(abc.ToCharArray());
    textBox1.Text = a;
}

这段代码将引导我到这里文本框现在有:.00,但在此之后当我输入一些值时,它会将值作为;2334.3423424 但我想做 2334.34 这意味着值应该只替换.00并且用户不能在此之后输入值。

4

2 回答 2

2

这段代码将限制您的用户在文本框中仅输入小数点后 2 位数字。

    //In key press event:
    if (e.KeyChar == '.' && (sender as TextBox).Text.IndexOf('.') > -1)
    {
        e.Handled = true;
    }
    if (!char.IsControl(e.KeyChar))
    {
        TextBox tt = (TextBox)sender;
        if (tt.Text.IndexOf('.') > -1 && tt.Text.Substring(tt.Text.IndexOf('.')).Length >= 3)
         {
           e.Handled = true;
         }
     }
于 2012-09-15T06:10:40.123 回答
0

如果您的意思是要将数字四舍五入到小数点后两位,请使用Math.Round(Double, Int32)函数。

在你的情况下,你可以打电话

double value = Convert.ToDouble(textBox1.Text);
double finalValue = Math.Round(value, 2);
textBox1.Text = finalValue.ToString();

还要确保验证用户输入并确保用户只输入数值。

于 2012-09-15T06:05:30.073 回答