值更改事件处理程序 [英] value changed eventhandler

查看:145
本文介绍了值更改事件处理程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

每当整数值发生变化时,我想做出反应。那么,是否有可能写一个自己的事件处理者?我需要获取旧的值和新的值,因为我必须使用旧值的索引取消引用列表中的一个对象的一些事件,并将这些事件引用到具有新值的索引的listitem中。 / p>

这样的东西(真正的抽象):

  value.Changed + = new Eventhandler(valuechanged); 
private void valuechanged(object sender,eventargs e)
{
list [e.Oldvalue] - = some eventhandler;
list [e.newValue] + = some eventhanlder;
}

谢谢。

解决方案

你可以这样做:

  class ValueChangedEventArgs:EventArgs 
{
public readonly int LastValue;
public readonly int NewValue;

public ValueChangedEventArgs(int LastValue,int NewValue)
{
this.LastValue = LastValue;
this.NewValue = NewValue;
}
}

类值
{
public Values(int InitialValue)
{
_value = InitialValue;
}

public event EventHandler< ValueChangedEventArgs>的ValueChanged;

protected virtual void OnValueChanged(ValueChangedEventArgs e)
{
if(ValueChanged!= null)
ValueChanged(this,e);
}

private int _value;

public int Value
{
get {return _value; }
set
{
int oldValue = _value;
_value = value;
OnValueChanged(new ValueChangedEventArgs(oldValue,_value));
}
}
}

所以你可以使用你的课像这样(控制台测试):

  void Main()
{
值test = new Values(10);

test.ValueChanged + = _ValueChanged;

test.Value = 100;
test.Value = 1000;
test.Value = 2000;
}

void _ValueChanged(object sender,ValueChangedEventArgs e)
{
Console.WriteLine(e.LastValue.ToString());
Console.WriteLine(e.NewValue.ToString());
}

这将打印:

 最后价值:10 
新值:100

最终价值:100
新值:1000

最后价值:1000
新值:2000


I want to react, whenever an integer value has changed. So, is there a possibility to write an own eventhandler? I need to get the old value and the new one, because I have to de-reference some events for an object in a list with the index of the old value and reference these events to the listitem with the index of the new value.

Something like this (really abstract):

value.Changed += new Eventhandler(valuechanged);
private void valuechanged(object sender, eventargs e)
{
     list[e.Oldvalue] -= some eventhandler;
     list[e.newValue] += some eventhanlder;
}

Thanks.

解决方案

You can do something like this:

class ValueChangedEventArgs : EventArgs
{
     public readonly int LastValue;
     public readonly int NewValue;

     public ValueChangedEventArgs(int LastValue, int NewValue)
     {
         this.LastValue = LastValue;
         this.NewValue = NewValue;
     }
}

class Values
{
     public Values(int InitialValue)
     { 
          _value = InitialValue;
     }

     public event EventHandler<ValueChangedEventArgs> ValueChanged;

     protected virtual void OnValueChanged(ValueChangedEventArgs e)
     {
           if(ValueChanged != null)
              ValueChanged(this, e);
     }

     private int _value;

     public int Value
     {
         get { return _value; }
         set 
         {
             int oldValue = _value;
             _value = value;
             OnValueChanged(new ValueChangedEventArgs(oldValue, _value));
         }
     }
}

So you can use your class like here (Console Test):

void Main()
{
     Values test = new Values(10);

     test.ValueChanged += _ValueChanged;

     test.Value = 100;
     test.Value = 1000;
     test.Value = 2000;
}

void _ValueChanged(object sender, ValueChangedEventArgs e)
{
     Console.WriteLine(e.LastValue.ToString());
     Console.WriteLine(e.NewValue.ToString());
} 

This will print:

Last Value: 10
New Value:  100

Last Value: 100
New Value: 1000

Last Value: 1000
New Value: 2000

这篇关于值更改事件处理程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆