C# 文本框相关问题:像DatagridView单元格一样进行验证

C# 文本框相关问题:像DatagridView单元格一样进行验证,c#,windows,winforms,textbox,C#,Windows,Winforms,Textbox,我需要验证一个文本框,如下所示: 当用户从该文本框更改焦点时,我希望显示格式正确的货币值,但不会丢失用户输入的实际值,因为我需要它用于以后的计算,如果是这样,则用于用户以后的编辑 我可以这样做吗?我不想让另一个变量仅用于此目的,我记得datagrid视图上的“验证”(我认为)事件允许您保留值并格式化该值,因此如果您必须更改或用于计算,您只需使用value属性,在显示时,它使用FormattedValue属性。。。 我可以这样做吗 谢谢 为什么不简单地为onblur事件设置一个事件处理程序,它通过

我需要验证一个文本框,如下所示:

当用户从该文本框更改焦点时,我希望显示格式正确的货币值,但不会丢失用户输入的实际值,因为我需要它用于以后的计算,如果是这样,则用于用户以后的编辑

我可以这样做吗?我不想让另一个变量仅用于此目的,我记得datagrid视图上的“验证”(我认为)事件允许您保留值并格式化该值,因此如果您必须更改或用于计算,您只需使用value属性,在显示时,它使用FormattedValue属性。。。 我可以这样做吗


谢谢

为什么不简单地为onblur事件设置一个事件处理程序,它通过删除所有非数字(小数点除外)字符来解析字符串,然后转换为十进制,然后将其格式化为货币


然后,每当需要该值时,只需再次解析它。没有必要将他们键入的内容与格式化的值分开。

定义一个函数,该函数格式化用户输入的值并返回格式化的值。在文本框的LostFocus事件中,您可以接受用户输入的值并将其存储到变量中。然后,将变量值作为参数传递给函数。格式化值并将值返回到文本框

    private void textBox1_Leave(object sender, EventArgs e)
    {
        Int32 original_value = Convert.ToInt32(textBox1.Text);
        textBox1.Text = Format(original_value).ToString();
        //original_value still holds the value that the user entered.
        //textbox holds the formated value.

    }
    public int Format(int a)
    {
        //code to format your input value
        return a;
    }
这样,变量将保存用户输入的实际值,文本框将显示格式化的值。这有帮助吗

如果您根本不想使用另一个变量,那么您可以创建自己的类控件来继承textbox控件,或者只获取源代码,并使用该类的Override属性。 也许会有帮助