2011-01-23 80 views
0

我必须这样做(用自定义滑块或标准控制):大问题在C#中使用类接口与自定义事件时

 ISlider ISlider; 
     ISlider = slider as ISlider; 
     if (ISlider != null) 
     { 
      ISlider.CustomEvent += new CustomEventDelegate(MyCustomEventHandler); 
     } 
     else 
     { 
      // standard control 
      this.slider.ValueChanged += new RoutedPropertyChangedEventHandler<double>(this.slider_ValueChange); 
     } 

但是C#拒绝了,因为它说,接口不能包含字段(自定义事件)如果我没有在接口中声明CustomEvent,那么我的代码无法编译,那么我该怎么办?

在ISlider我只是想声明的接口:

CustomEventDelegate CustomEvent ; 
+0

显示为ISlider接口声明的代码。 – 2011-01-23 20:05:39

+0

好的更新问题谢谢。 – user310291 2011-01-23 20:08:34

回答

9

自定义事件确实应被宣布为ISlider现场。应该声明为事件

public delegate void CustomEventDelegate(/*whatever*/); 

public interface ISlider { 
    event CustomEventDelegate CustomEvent; 
} 

和修复您的代码,以便typenames和参考变量名是不同的:

ISlider itf; 
    itf = slider as ISlider; 
    if (itf != null) 
    { 
     itf.CustomEvent += new CustomEventDelegate(MyCustomEventHandler); 
    }