Question

I have a WinForm with some numreicUpDown Controls, i want to know if the value has been incremented or decremented. the control fires the event value changed for both situations, and as far as i can understand the programm calls the methods UpButton and DownButton. Is there any other way to know how the value has been changed or do i have to do this with this methods(like firing eventor implementig my code in Up-Down-Button)

Was it helpful?

Solution

There is no standart way to do this. I sugest to remember the old value and compare it with new one

decimal oldValue;

private void ValueChanged(object sender, EventArgs e)
{
    if (numericUpDown.Value > oldValue)
    {
    }
    else
    {
    }
    oldValue = numericUpDown.Value;
}

OTHER TIPS

Create your own control that overrides those UpButton and DownButton methods:

using System.Windows.Forms;
public class EnhancedNUD : NumericUpDown
{
    public event EventHandler BeforeUpButtoning;
    public event EventHandler BeforeDownButtoning;
    public event EventHandler AfterUpButtoning;
    public event EventHandler AfterDownButtoning;

    public override void UpButton()
    {
        if (BeforeUpButtoning != null) BeforeUpButtoning.Invoke(this, new EventArgs());
        //Do what you want here...
        //Or comment out the line below and do your own thing
        base.UpButton();
        if (AfterUpButtoning != null) AfterUpButtoning.Invoke(this, new EventArgs());
    }
    public override void DownButton()
    {
        if (BeforeDownButtoning != null) BeforeDownButtoning.Invoke(this, new EventArgs());
        //Do what you want here...
        //Or comment out the line below and do your own thing
        base.DownButton();
        if (AfterDownButtoning != null) AfterDownButtoning.Invoke(this, new EventArgs());
    }
}

Then when you implement the control on your form, you can hook up some of the events to let you know which button was clicked or key (up/down) hit.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top