C# NumericUpDown错误消息框

C# NumericUpDown错误消息框,c#,winforms,messagebox,numericupdown,C#,Winforms,Messagebox,Numericupdown,我想问我应该在我的“numGPA”中插入什么代码来通知用户他们已经超过了“最大值” 现在,如果尝试“提交”一个高于最大值的值,我的VisualStudio将只播放“叮”声 相反,我希望有一个消息框,上面写着“只允许0到4之间的值” 我在谷歌上找到了这段代码,尽管我将numericUpDown1改为numGPA,但它还是不起作用 if (numGPA.Value >= 4 || numGPA.Value <= 0) { Messa

我想问我应该在我的“numGPA”中插入什么代码来通知用户他们已经超过了“最大值”

现在,如果尝试“提交”一个高于最大值的值,我的VisualStudio将只播放“叮”声

相反,我希望有一个消息框,上面写着“只允许0到4之间的值”

我在谷歌上找到了这段代码,尽管我将numericUpDown1改为numGPA,但它还是不起作用

        if (numGPA.Value >= 4 || numGPA.Value <= 0)
        {
            MessageBox.Show("Error. Number must be between 0 and 4");
            numGPA.Value = 1;
            numGPA.ReadOnly = true;
        }

如果(numGPA.Value>=4 | | numGPA.Value您可以通过TextChange事件实现这一点。您还可以(也应该)设置最小和最大属性以限制箭头输入

Private Sub NumericUpDown1_Changed(sender As Object, e As EventArgs) Handles NumericUpDown1.TextChanged
If IsNumeric(NumericUpDown1.Text) AndAlso _
  CInt(NumericUpDown1.Text) > NumericUpDown1.Maximum Then MsgBox("Oops! Too big.")
End Sub

最好的方法是让用户编辑并仅在完成后检查。这将触发
ValueChanged
事件

在这里,我们可以通过抓取内部
文本框
控件来获取输入的值

我建议使用助手函数,可能如下所示:

void nudCheck(NumericUpDown nud)
{
    TextBox tb = (TextBox) nud.Controls[1];
    if (Convert.ToInt32(tb.Text) > nud.Maximum)
    {
        string msg = tb.Text + " is too large! Setting value to maximum: " + nud.Maximum;
        tb.Text = "" + nud.Maximum;
        nud.Value = nud.Maximum;
        // do what you want with the message string!
        //MessageBox.Show(msg);   // not recommended!
        toolTip1.Show(msg, nud);  // add a ToolTip component to your form for this!
    }
}
在这里叫它:

private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
    nudCheck(numericUpDown1);
}
我们还希望在用户按下
Enter
时抑制错误声音,最好是在
KeyDown
事件中

private void numericUpDown1_KeyDown(object sender, KeyEventArgs e)
{
   if (e.KeyCode == Keys.Enter) 
   {
       nudCheck(numericUpDown1);
       e.SuppressKeyPress = true;
   }
}
请注意,打开一个实际的
消息框
将返回铃声,并强制用户将其清除。因此,我使用了
工具提示
,但是如果您有足够的空间,标签
也会起作用


显然,您可能需要添加类似的代码来检查低于
最小值的输入。

如果您使用最小值和最大值属性,NumericUpDown永远不会有无效值,并且您不需要使用MessageBox来打扰用户。此代码在何处执行?什么事件?消息框非常粗鲁且具有侵入性。嘟嘟声是much更好。如果您想发送消息,请在控件旁边添加一个标签,将其隐藏,然后与消息一起显示。您必须知道您的答案不是c#,对吗?