从NumericUpDown的Validating事件中获取“无效”值

3
当用户输入的值超过numericUpDown.Maximum时,控件的值会自动设置为最大值。我想在发生这种情况时显示一个MessageBox,但是我无法这样做,因为当Validating事件被触发时,control.Valuecontrol.Text已经包含了自动设置的最大值。
private void numericUpDown_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
       NumericUpDown control = sender as NumericUpDown;
       decimal newValue = control.Value;

       // decimal newValue;
       // decimal.TryParse(control.Text, out newValue)

       if (newValue > control.Maximum || newValue < control.Minimum)
       {
            // MessageBox

        }

}

谢谢


这可能会有所帮助:https://dev59.com/tU7Sa4cB1Zd3GeqP21_s - atoMerz
1个回答

3
使用弹出消息框来频繁打扰用户并不是最好的用户界面设计。但你可以通过设置最小值和最大值,以及检查ValueChanged事件中的值来轻松实现。

你是在暗示值被更改而没有通知吗?我同意消息框可能很烦人。但是使用像ASP.NET这样的验证控件既可以提供更多信息,又不会那么烦人。 - atoMerz
不,这个问题与ASP.NET无关。 - Hans Passant
“ASP.NET like” 验证控件,我指的是那里使用的方法,而不是控件本身。实现是可能的,并且已经在我在问题评论中提供的链接中讨论过。 - atoMerz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接