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。

C#NumericUpDown.UnValueChanged,它是如何更改的

只标记最后一个值可能会容易得多。

    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;
}

有关如何引发自定义事件的说明,请参阅此处,有关事件处理的其他信息,请参阅这里。