关于NumericUpDown的问题
我用的是.NET 2.0
在一个UserControl上有一个NumericUpDown控件用来表示时间间隔,其有效范围是10-100,我在代码中为NumericUpDown加上了ValueChanged事件用来监测其值的变化,问题是当我手动输入值时并不会触发这个事件,必须等其转换焦点才能触发,NumericUpDown没有类似于TextChanged之类的事件能即时的监测到值的变化么?
还有一个问题就是我可以在NumericUpDown中手动输入200(虽然其超过了最大值100),只要焦点转换,其值就自动从200变为100,这看起来有点奇怪,有没有办法让输入的值保持不变呢?比如我输入200,转换焦点后其值还是200.之所以有这样的要求是因为客户输入了200,但是没有提示用户输入的不对就自动将其变为100,看起来有点奇怪,现在想给用户一个提示
[解决办法]
第一个问题,如果不转换焦点就ValueChanged那你必须用程序判断你暂停输入了,假设你输完仅接着又想改正难道你还想让它触发什么事件么?
第二个问题,似乎不可能实现。
[解决办法]
没有
还是是用TextBox吧。
[解决办法]
你可以把numericUpDown的范围设置得足够大,但是在检验的时候只取一个更小的范围并给出提示.
[解决办法]
在form_Load事件里先加入这行代码:
private void Form1_Load(object sender, EventArgs e)
{
numericUpDown1.Controls[1].TextChanged += new EventHandler(numericUpDown1_TextChanged);
}
private void numericUpDown1_TextChanged(object sender, EventArgs e)
{
this.Text = numericUpDown1.Controls[1].Text;
}
[解决办法]
keyup事件
如这是我项目中的代码
private void numericUpDown2_KeyUp(object sender, KeyEventArgs e)
{
numericUpDown3.Value = numericUpDown2.Value + numericUpDown4.Value - 1;
DisplayEngine();
}