关于 NumericUpDown 控件 ValueChange 事件中加消息框的很 bug 的一个问题,在线等

hurri_ 2012-08-13 02:35:06
将 NumericUpDown 控件的最大值设为50,初值为0。
在该控件的ValueChange事件中加入如下代码
if(NumericUpDown.Value==50)
{
MessageBox.Show(“最大值不得超过50”);
}
然后按住控件的向上箭头不放开鼠标,数值变化值到50时弹出消息框,点消息框“确定”按钮,程序崩溃,提示“未将引用设置到对象的实例”。
个人认为是微软系统的问题,请求解决方法!!
...全文
190 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hurri_ 2012-08-14
  • 打赏
  • 举报
回复
解决了,用异步委托的方式;
private void showMsgBox()
{
MessageBox.Show("最大值不得超过50");
}

private void numericUpDown_ValueChanged(object sender, EventArgs e)
{
if (numericUpDown.Value == 50)
{
this.BeginInvoke(new ThreadStart(showMsgBox));
}
}
hurri_ 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
把代码改为下面这样试试:

if(NumericUpDown.Value>=50)
{
NumbericUpDown.Value=50;
MessageBox.Show(“最大值不得超过50”);
}

我不太会C#语法,你应该能明白意思。

因按住NumbericUpDown的箭头,似乎变化并非始终以1为步进,而是有一定增量。具体也不是很确定,要根据实际情况分析。
[/Quote]
这样也是不行的,具体是什么原因导致的这个问题,我现在也不太明白,谢谢你的回答
lc_ant 2012-08-14
  • 打赏
  • 举报
回复
if(NumericUpDown.Value==50)
{
MessageBox.Show(“最大值不得超过50”);
return;
}


加个return吧 嘿嘿
老龙友 2012-08-13
  • 打赏
  • 举报
回复
把代码改为下面这样试试:

if(NumericUpDown.Value>=50)
{
NumbericUpDown.Value=50;
MessageBox.Show(“最大值不得超过50”);
}

我不太会C#语法,你应该能明白意思。

因按住NumbericUpDown的箭头,似乎变化并非始终以1为步进,而是有一定增量。具体也不是很确定,要根据实际情况分析。
hurri_ 2012-08-13
  • 打赏
  • 举报
回复
非常感谢您的回答!我们这个软件的设计是要图像随着控件的值实时的变化,而不是按钮提交确认时才变化,而且弹出消息框还是很有必要的。我的提问是将我遇到的问题简化了,但和我遇到的是一样的,现在是想看看怎么解决这个问题。希望大家多多探讨!!
  • 打赏
  • 举报
回复
你可以将判断放在其他事件中,比如按钮提交确认时判断,没必要每改变一次值就判断一次

另外,你可以设置NumericUpDown 控件的Maximum属性最大值设置为50,也没必要弹出什么判断消息提示,就像dropdownList选择下拉框,初始化了什么,用户就只能选择什么,没必要提示

110,572

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧