2011-01-23 120 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); 
    }