我在这里遗漏了一些东西,我有两个用户控件,这两个用户控件都有一个使用相同委托的事件,因此我将两个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;
答案 0 :(得分:0)
将您的项目转换为 Web应用程序,因为网站非常难以使用。
此外,我看到你正在使用一些非常奇怪的事件约定。
在.NET事件处理程序中,通常有两个参数,其中一个是object sender
,第二个类型必须从EventArgs
派生。如果您不想传递任何信息,请将其保留EventArgs
并传递EventArgs.Empty
。
您不需要为事件定义自定义委托 - 框架已经为您提供了简单的EventHandler
和通用EventHander<TEventArgs>
,允许您在要转移时指定EventArgs
类型信息。
我通常也会编写一个带有EventArgs<T>
属性的帮助器Item
类,这样我就能快速传递一些东西而不会污染代码库。