我有一个名为";TrendPoint";ITrendPoint类型。我需要提高一个";OnTrendPointChanged";每当TrendPoint的值发生变化并执行一组操作时,就会发生事件。我已经尝试了以下操作,但似乎无法继续:
public class TestClass:ObservablePoint
{
private ITrendPoint trendPoint;
public ITrendPoint TrendPoint{
get{ return trendPoint ;}
set{ this.trendPoint= value;
//Need to Call the event handler
// "OnTrendPointChanged"
}
public void TestJob()
{
//The TrendPoint is being set
// here
TrendPoint=
Services.getTrendPoint();
}
//The event handler
private void
OnTrendPointChanged(object sender,
ValueChangedEventArgs<string> e)
{
switch(e.value):
case "HIGH":
Log("TR HIGH");
case "Low":
Log("TR LOW");
//Other such conditions
.
.
.
}
}
我不知道我到底是如何得到事件处理程序";OnTrendPointChanged";每当"0"的值为0时执行;TrendPoint";更改。感谢您的帮助!
我不清楚在代码中设置事件处理程序是否有任何意义。
把它放在一边。您似乎没有使用sender,所以它可以为null。也许你有一些代码使用了你没有向我们展示的代码。在这种情况下,你需要传递发送者的一些实例。这与你提供的内容不清楚(顽皮(。
因此,我们可以为发送方传递null,但需要一个valuechangedeventargs实例来传递。
类似于:
public ITrendPoint TrendPoint{
get{ return trendPoint ;}
set{ this.trendPoint= value;
var vc = new ValueChangedEventArgs<TrendPoint>(this.trendPoint);
OnTrendPointChanged(null, vc);
}
假设OnTrendPointChanged在同一个类中。看起来是你提供的,但也许不是。
如果处理程序在其他类中,那么显然需要引用该类的实例。
我怎么知道一个价值观的改变是这样的?我查了一下:
https://learn.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.language.intellisense.valuechangedeventargs-1?view=visualstudiosdk-2022
希望所有这些都能有所帮助。