在C#中的文本框中格式化数据

时间:2014-09-24 17:58:23

标签: c# visual-studio-2012 formatting code-behind

我在表单上有一个下拉控件。此下拉列表的结果需要写入隐藏文本框,但当它们写入文本框时,需要采用“XX.XX”格式。因此,如果用户选择“1.0”,则需要将其写入文本框“01.00”。

我是原生的Access / VBA程序员,在VBA中相当容易。我将如何在C#代码隐藏中执行此操作?

我现在拥有的是:

    protected void ddlCIT_SelectedIndexChanged(object sender, EventArgs e)
    {
        txtCIT.Text = ddlCIT.SelectedValue;
    }

这是在我了解此要求之前。所以它根本没有解决格式问题。我确定它必须是这样的:

txtCIT.Text = Format(ddlCIT.SelectedValue, "##.##");

或者其他什么,但我无法理解。我发现的所有例子都没有做任何接近我需要的事情。

修改

根据asven的回答,我现在得到以下代码:

 string ddlCITVal = ddlCIT.SelectedValue.ToString();
 txtCIT.Text = string.Format("{0:#0.0#}", ddlCITVal);
 string blearg = string.Format("{0:0.0#}", ddlCITVal);

当我从下拉列表中选择“2.0”时,我的文本框和我的字符串“blearg”在立即窗口中显示“2.0”的结果。我也尝试在格式子句中使用“{0:00.00}”,结果相同。

如果重要,我正在使用VS2012。

2 个答案:

答案 0 :(得分:2)

尝试

string.Format("{0:00.00}", ddlCIT.SelectedValue);

答案 1 :(得分:0)

您可以更进一步,使用自定义文本框。这允许您内置验证和格式:

public class NumDoubTextbox : TextBox
{
    public override string Text
    {
        get
        {
            return base.Text;
        }
        set
        {
            double temp = 0;
            if (double.TryParse(value, out temp))
                //Formatting as a float then padding left with 0's should give the format you want
                base.Text = temp.ToString("F2").PadLeft(5,'0');
            else
                //Handle invalid input here. 
                base.Text = "--.--";
        }
    }
}

您可以将它放在一个单独的项目中并进行编译并将其包含在工具箱中,以便在设计时使用它。