我想问一下我应该将哪些代码插入到我的" numGPA"告知用户他们已超过"最大值"。
现在,如果尝试"提交"一个超过最大值的值,我的视觉工作室只会播放一个" ding"声音。
而不是我希望有一个类似&#34的消息框;只允许从0到4的值"
我在Google上发现了这段代码,尽管我将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;
}
请查看此视频,以清楚了解我的观点 https://www.youtube.com/watch?v=XVv-it6x044&feature=youtu.be
而不是&#34; ding&#34;声音效果播放@ 0.06,我想要一个MessageBox。
答案 0 :(得分:0)
您可以使用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
答案 1 :(得分:0)
最好的方法是让用户编辑并仅检查他何时完成。这将触发ValueChanged
事件。
在这里,我们可以通过抓取内部TextBox
控件来获取输入的值。
我建议使用辅助函数,可能是这样的:
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;
}
}
请注意,调出实际的MessageBox
会带回铃声,并强制用户摆脱它。所以我使用了ToolTip
,但如果你有空间,Label
也会有效。
显然,您可能需要添加类似的代码来检查输入低于Minimum
..