我需要按如下方式验证文本框:
当用户从该文本框更改焦点时,我想显示正确格式化的货币值,但不会丢失真实的用户输入值,因为我需要它用于以后的计算,如果是这样的话,以便稍后编辑用户......
我能这样做吗?我不想只为此而设置另一个变量,并且我记得datagrid视图中的“验证”(我认为)事件,它允许您保留值并格式化该值,因此如果您必须更改或用于计算,你只需使用VALUE属性,并显示,它使用FORMATEDVALUE属性... 我可以这样做吗?
谢谢!
答案 0 :(得分:0)
为什么不简单地为onblur事件设置一个事件处理程序,它通过删除所有非数字(小数点除外)字符来解析字符串,然后转换为小数,然后将其格式化为货币?
然后,只要您需要该值,只需再次解析它。没有必要保持他们键入的内容和格式化的值分开。
答案 1 :(得分:0)
定义一个格式化用户输入值并返回格式化值的函数。在文本框的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;
}
这样,您的变量保存用户输入的实际值,文本框将显示格式化的值。这有用吗。
如果您根本不想使用其他变量,那么您可以创建自己的类控件来继承文本框控件,或者只获取源代码,并使用该类的Override属性。 this可能有帮助。