假设我有一个DecimalPlaces = 2的NumericUpDown.
用户键入"1.233"(他们不知道,不小心轻敲"3"键两次)然后导航离开控件.此输入现在在控件中显示为"1.23".但是,Value属性现在为1.233.因此,对用户来说,他们正在使用值1.23,实际上,他们正在使用值1.233.有没有办法让NumericUpDown返回"正确"值:1.23?
我知道DecimalPlaces属性"...设置要显示的小数位数",但是用户无法通过简单地读取屏幕来确定将使用的值.
一种方法是始终忽略所有NumericUpDowns的Value属性,只使用Text属性(从IntelliSense隐藏)并对该属性执行decimal.Parse() - 但这看起来很尴尬.另一点是,如果用户键入"1.233"然后导航离开控件,那么,当ValueChanged事件发生时,Text属性仍为"1.233".
是.Validating事件始终可用于调整数据输入.像这样:
private void numericUpDown1_Validating(object sender, CancelEventArgs e) {
numericUpDown1.Value = Math.Round(numericUpDown1.Value,
numericUpDown1.DecimalPlaces, MidpointRounding.AwayFromZero);
}
Run Code Online (Sandbox Code Playgroud)