很有意思的NumericUpDown的Value
来源:互联网 发布:澳门mac book pro价格 编辑:程序博客网 时间:2024/05/22 00:09
遇到使用NumericUpDown控件的一个小程序,在使用到其Value属性时遇到一个很有意思的事情,背景如下:
首先要做的是一个计算银行存款本息合计的简单程序,界面大概如下:
程序功能可以从界面中看到,在存款金额中输入数字,选择存款期限后,相应的利率会出现在第三个文本框中,然后便可以计算本息合计。程序功能自不必多说,但关于NumericUpDown的使用有一点需要注意的:当你手动把其中输入的删除之后,其值(Value)却保持不变,这对于程序当然要出错,而且我们在做非空检查的时候也无从做起,因为其值仍然保留的是你清空之前的值,比如,我们输入了一些数值并计算之后,如下图:
本来我们在计算事件的代码中有这样的非空检查代码:
if (numericUpDown1.Value == 0)
{
MessageBox.Show("请输入金额!", "友情提示");
return;
}
这句代码如要是防止用户不输入任何值就计算的,但对于上图来讲,当我们把金额中的100手动删掉然后保持这个输入框为空,然后选择不同的存款期限,却发现还能计算出来值,经过一番跟踪发现问题是这样的:当手动清空numericUpDown1之后,其value属性还保存原来的值100,也就是说清空并不能改变其值,但此时我们需要检查这种情况,该怎么检查呢,上面的代码已经不行,但从属性中又没有发现其他可以利用的属性,于是转到事件,但试了一圈发现其实不管用任何方法,其值(Value)都是不变的,要怎么能检测到它本身为空的这个情况,也就是说它本身为空的这个现象要通过什么属性反映出来呢,也想到了Text属性,但从属性列表中找不到,百思不得其解之际,最后断点跟踪进去,发现numericUpDown1竟然有Text属性,而且果然是空的,但就是访问不到,跟到元数据,发现如下代码,终于找到了原因
//
// Summary:
// Gets or sets the text to be displayed in the System.Windows.Forms.NumericUpDown
// control.
[Bindable(false)]
[EditorBrowsable(1)]
[DesignerSerializationVisibility(0)]
[Browsable(false)]
public override string Text { get; set; }
大家注意倒数第二行有个[Browsable(false)],这代表其Text属性是不可浏览的,这就解释了为什么在代码中访问不了其Text属性,那就往其父类追踪,果然其父类的Text属性是可以访问的,代码如下:
//
// Summary:
// Gets or sets the text displayed in the spin box (also known as an up-down
// control).
//
// Returns:
// The string value displayed in the spin box.
[Localizable(true)]
public override string Text { get; set; }
既然这样,解决办法就有了,我们把代码中的numericUpDown1转化为其父类的一个对象,然后就可以根据其Text属性判断是否为空了,代码如下:
UpDownBase up = (UpDownBase)numericUpDown1;
if (up.Text == "")
{
MessageBox.Show("请你输入正确的数值!");
return;
}
用这句话来检查空值就屡试不爽了!感兴趣的可以试一下啊!
- 很有意思的NumericUpDown的Value
- 很有意思的NumericUpDown的Value
- C#的numericUpDown控件
- Winform的numericUpDown控件
- 设置或取得c# NumericUpDown 编辑框值的方法,(注意:不是Value值)
- 很有意思的贺卡
- 很有意思的转动
- 很有意思的JS
- 很有意思的博弈论
- 很有意思的网站
- 很有意思的职业生涯规划
- 很有意思的代码
- 很有意思的博弈论
- 一个很有意思的网站
- 很有意思的一个flash
- 一篇很有意思的文章
- 一件很有意思的事情
- 一道很有意思的题目
- inserter、back_inserter、front_inserter
- IE6解决PNG问题
- 关于DOM SAX StAX JAXP JDOM DOM4J Xerces Crimson
- 获取IOS的当前版本号
- DXF图元文件提取与显示(二)-Line
- 很有意思的NumericUpDown的Value
- Oracle SCN三篇文章
- ARM架构与体系学习(三)——ARM处理器状态
- Delphi与Vista提供的UAC控制
- CIO,被围困之下的IT管理工作
- Mac OS X应用程序下的主要文件夹
- 用Admob的Ad Network Mediation比用Adwhirl的收入多
- 《编程之美》2.20 程序理解和时间分析(读别人的程序)
- 一些关于JS特效的例子