我无法触发事件。这是我的代码。我告诉我,我想知道更改的值是此行的值:
eventvaluechange.IntValue = value;//link value as the value I want to see change
然后,我告诉您价值变化发生时它将如何处理。
public partial class Form1 : Form
{
int value=0;
int value2=999;
Val_changeInt eventvaluechange;
public Form1()
{
InitializeComponent();
eventvaluechange = new Val_changeInt();
eventvaluechange.IntValue = value;//link value as the value I want to see change
eventvaluechange.ValueChanged += new EventHandler(ValueHasChanged);//what I do on event
}
private void button1_Click(object sender, EventArgs e)
{
value = value +1;
}
private void ValueHasChanged(object sender, EventArgs e)
{
value2 = value;
label1.Text = value2.ToString();
}
class Val_changeInt
{
private int valueToWatchOn;
public event System.EventHandler ValueChanged;
protected object _lock = new object();
protected virtual void ValueHasChanged()
{
EventHandler eventvaluechange = ValueChanged;
if (eventvaluechange != null) eventvaluechange(this, EventArgs.Empty);
}
public int IntValue
{
get { return this.valueToWatchOn; }
set
{
if (value != this.valueToWatchOn)
{//if value changed enter
this.valueToWatchOn = value;
ValueHasChanged();
}
}
}
}//Event handler for a value change
我究竟做错了什么??
非常感谢。
这:
eventvaluechange.IntValue = value;//link value as the value I want to see change
并非您认为的那样。之间没有链接,eventvaluechange.IntValue
并且value
由于它涉及值类型,因此仅复制值,因此不会复制任何引用。
要使此工作有效,您必须使用实例化的值持有者eventvaluechange
,因为该实例保存的值将在值更改时触发事件。像这样:
private void button1_Click(object sender, EventArgs e)
{
eventvaluechange.IntValue = eventvaluechange.IntValue + 1;
}
private void ValueHasChanged(object sender, EventArgs e)
{
value2 = eventvaluechange.IntValue;
label1.Text = value2.ToString();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句