各位前辈,小弟刚学C#,碰到些问题,还望各位帮解答一下。
程序要求:把一个文本框中的浮点数据转为16位无符号数据输出。
步骤要求:1.当文本框输入完成后触发事件,把浮点数转为16位整数。
2.当按下一个按键后触发另一个事件,用“MessageBox”将刚才的
16位整数显示出来。
问题: 因换算工作是在输入完成后就进行,请问用文本框的哪个事件合适?
曾做尝试:1.用文本框的“TextChanged”事件,可这样似乎有点浪费CPU资源,因为
每输入一个数字都会触发一次事件,而且还会在输入小数点时引发异常。
2.用文本框的“leave”事件,当光标离开文本框时就触发事件。可这样
又有新的问题:如果输入完成后直接点击按键,这时光标离开文本框了,理
应执行“leave”事件,可因点击按键时,又触发了另一个事件,请问系统
是先检测到哪个事件?先执行哪个事件?如果要实现程序的要求,还有没有
别的更好的办法?
程序要求:把一个文本框中的浮点数据转为16位无符号数据输出。
步骤要求:1.当文本框输入完成后触发事件,把浮点数转为16位整数。
2.当按下一个按键后触发另一个事件,用“MessageBox”将刚才的
16位整数显示出来。
问题: 因换算工作是在输入完成后就进行,请问用文本框的哪个事件合适?
曾做尝试:1.用文本框的“TextChanged”事件,可这样似乎有点浪费CPU资源,因为
每输入一个数字都会触发一次事件,而且还会在输入小数点时引发异常。
2.用文本框的“leave”事件,当光标离开文本框时就触发事件。可这样
又有新的问题:如果输入完成后直接点击按键,这时光标离开文本框了,理
应执行“leave”事件,可因点击按键时,又触发了另一个事件,请问系统
是先检测到哪个事件?先执行哪个事件?如果要实现程序的要求,还有没有
别的更好的办法?
你可以试试哪个先执行 等待其他解决办法
2:系统不是绝对完美的。
事件再怎么着 都是有先后顺序的。不可能同时,最多是一个事件里嵌套另外一个。LEAVE先执行 然后才是其他控件的事件
每输入一个数字都会触发一次事件,而且还会在输入小数点时引发异常。"
你试过了? "TextChanged”事件输入完光标在文本框失去焦点时候才触发。
回复3楼:我曾试过在执行“leave”事件时在一个标签显示一个值,然后在执行“click”事件时在另一个标签显示另一个值,结果看到是先执行“leave”事件,再执行“click”事件,但不能保证每次都是这样,因为不知会不会有时系统是先检测到光标在按键上才知道光标已离开了文本框,这样的话应该是先触发“click”事件。
另外我也试过设这两个事件都弹出“MessageBox”,结果只有“leave”事件弹出,关闭后也不弹出“click”事件的。
自己可以设置断点调试下。
最后不要用回车来控制,太不人性化了,客户会郁闷死
貌似你错拉,"TextChanged”在文本改变的时候就会被触发
回复7楼: 效验的话也只能效能不能有效转换,但合法的输入是很多的,如3.12合法,3.123也是合法等。
回复6楼: 因为点击按键会有很多次,但并不是每次都输入新数值,如果每点击按键都执行换算的话也浪费资源了。我是不是太斤斤计较资源了?!PS:各位若有兴趣,可以试一下这两个事件都弹出一个“MessageBox”,看有什么情况。