C#NumericUpDown.UnValueChanged,它是如何更改的
本文关键字:何更改 UnValueChanged C#NumericUpDown | 更新日期: 2023-09-27 18:22:35
我想问一下如何为现有事件处理程序创建自定义EventArgs。
比方说,我有NumericUpDown numericUpDown
控件,并且我想要它的OnValueChanged
事件的处理程序。在visual studio中双击ValueChanged
会生成类似的片段
private void numericUpDown_ValueChanged(object sender, EventArgs e)
{
}
然而,我想知道它是如何更改的(比如+5,-4.7),但普通EventArgs
没有这些信息。也许Decimal change = Value - Decimal.Parse(Text)
会起作用(因为文本更改延迟),但这是一种丑陋的方式,可能不会每次都起作用。
我想我应该做我自己的EventArgs像这个
class ValueChangedEventArgs : EventArgs
{
public Decimal Change { get; set; }
}
然后以某种方式覆盖CCD_ 6事件以生成具有适当信息的EventArgs。
只标记最后一个值可能会容易得多。
private void numericUpDown1_ValueChanged(object sender, EventArgs e) {
NumericUpDown o = (NumericUpDown)sender;
int thisValue = (int) o.Value;
int lastValue = (o.Tag == null) ? 0 : (int) o.Tag;
o.Tag = thisValue;
MessageBox.Show("delta = " + (thisValue - lastValue));
}
您必须创建自己的数字上下控件来扩展.net版本,为事件定义委托类型,然后隐藏基本控件事件属性。
代表:
public delegate void MyOnValueChangedEvent(object sender, ValueChangedEventArgs args);
事件Args类:
class ValueChangedEventArgs : EventArgs
{
public Decimal Change { get; set; }
}
新建NumericUpDown类,用"New"隐藏继承的事件:
public class MyNumericUpDown : NumericUpDown
{
public new event MyOnValueChangedEvent OnValueChanged;
}
有关如何引发自定义事件的说明,请参阅此处,有关事件处理的其他信息,请参阅这里。