2011-02-25 128 views
0

代表我在這裏失去了一些東西,我有兩個用戶控件,這兩者有一個使用相同的委託的事件,因此我把兩個用戶控件在同一個名字,下面聲明和使用跨用戶控件

第一個控制例子

namespace Standalone.Controls 
{ 
    public delegate void onDataChanged(object sender); 
    public partial class TestItemWeb : System.Web.UI.UserControl 
    { 
     internal event onDataChanged DataChanged; 

第二控制

namespace Standalone.Controls 
{ 
    public partial class TestControlWeb : System.Web.UI.UserControl 
    { 
     internal event onDataChanged DataChanged; 

但是,運行它時,我得到這個錯誤,我不能看到我這個去錯了:

編譯錯誤

描述:編譯服務此請求所需的資源時發生錯誤。請查看以下具體的錯誤細節並適當修改您的源代碼。

編譯器錯誤信息:CS0246:類型或命名空間名稱「onDataChanged」找不到(是否缺少using指令或程序集引用?)

源錯誤:

13號線:公部分類TestControlWeb:System.Web.UI.UserControl

14行:{

線15:內部事件onDataChanged DataChanged;

回答

0

轉換你的項目Web應用程序因爲網站確實是一個痛苦的工作。
此外,我看到你正在使用一些非常奇怪的約定事件。

在.NET中,事件處理函數通常有兩個參數,其中一個參數是object sender,第二個參數的類型必須來自EventArgs。如果您不想傳遞任何信息,請將其保留EventArgs並通過EventArgs.Empty

您不需要爲事件定義自定義委託,框架已經爲您提供了簡單的EventHandler和通用EventHander<TEventArgs>,允許您在想要傳輸信息時指定EventArgs類型。

我通常還會編寫一個幫助程序EventArgs<T>類,它具有一個Item屬性,使我能夠快速傳遞某些內容而不會污染代碼庫。

+1

澄清一些此http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx – ramnz 2012-10-31 14:48:26