在usercontrols中声明和使用委托

时间:2011-02-25 00:39:45

标签: c# asp.net events delegates

我在这里遗漏了一些东西,我有两个用户控件,这两个用户控件都有一个使用相同委托的事件,因此我将两个usercontrol放在同一个命名空间中,下面是示例

第一控制

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;

1 个答案:

答案 0 :(得分:0)

将您的项目转换为 Web应用程序,因为网站非常难以使用。
此外,我看到你正在使用一些非常奇怪的事件约定。

在.NET事件处理程序中,通常有两个参数,其中一个是object sender,第二个类型必须从EventArgs派生。如果您不想传递任何信息,请将其保留EventArgs并传递EventArgs.Empty

您不需要为事件定义自定义委托 - 框架已经为您提供了简单的EventHandler和通用EventHander<TEventArgs>,允许您在要转移时指定EventArgs类型信息。

我通常也会编写一个带有EventArgs<T>属性的帮助器Item类,这样我就能快速传递一些东西而不会污染代码库。