我不能太確定你的問題,但也許你需要知道你可以在命名空間級別聲明委託?
namespace MyNamespace
{
public delegate void MyDelegate(object sender, EventArgs e);
public class MyClass
{
public event MyDelegate OnSomethingHappened;
}
}
編輯 我想我明白一個好一點......看看這是你在找什麼: 這是代碼從」的.cs'一的Site.Master頁的文件,和一個WebUserControl ...該委託是全局在名稱空間中,在母版頁中,並且用戶控件聲明該委託類型的事件:
// MASTER PAGE
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication4
{
public delegate void MyDelegate(object sender, EventArgs e);
public partial class SiteMaster : System.Web.UI.MasterPage
{
// Here I am declaring the instance of the control...I have put it here to illustrate
// but normally you have dropped it onto your form in the designer...
protected WebUserControl1 ctrl1;
protected void Page_Load(object sender, EventArgs e)
{
// instantiate user control...this is done automatically in the designer.cs page
// if you created it in the visual designer...
this.ctrl1 = new WebUserControl1();
// start listening for the event...
this.ctrl1.OnSomethingHappened += new MyDelegate(ctrl1_OnSomethingHappened);
}
void ctrl1_OnSomethingHappened(object sender, EventArgs e)
{
// here you react to the event being fired...
// perhaps you have "sent" yourself something as an object in the 'sender' parameter
// or perhaps you have declared a delegate that uses your own custom EventArgs...
}
}
}
//WEB USER CONTROL
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication4
{
public partial class WebUserControl1 : System.Web.UI.UserControl
{
public event MyDelegate OnSomethingHappened;
protected void Page_Load(object sender, EventArgs e)
{
}
private void MyMethod()
{
// do stuff...then fire event for some reason...
// Incidentally, ALWAYS do the != null check on the event before
// attempting to launch it...if nothing has subscribed to listen for the event
// then attempting to reference it will cause a null reference exception.
if (this.OnSomethingHappened != null) { this.OnSomethingHappened(this, EventArgs.Empty); }
}
}
}
謝謝。假設我在用戶控件上執行此操作,那麼如何在主頁面中使用它 - 與頁面中的方式相同? – dotnetnoob
讓我知道如果這是訣竅:-) – dylansweb
謝謝,這工作得很好。 – dotnetnoob