Web用户空件的事件怎么写???(C#)-散分

Eddie005 2004-08-04 08:45:12
vb.net 有RaiseEvent,C#呢???
...全文
130 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodluck001 2004-08-04
  • 打赏
  • 举报
回复
如此简单的问题怎么搞得这么复杂!

假如你的UserControl 类型叫 UC。

首先定义delegate:

public delegate ReturnType DelegateName(ParamType parameter1...);

然后定义事件:

public event DelegateName EventName;


现在把这个UC到某个页面实例化,对象名称为uc1.

那么现在就可以在页面的Page_Load 或者OnInit 事件函数里面把这个自定义事件实例化。
比如:
uc1.EventName+=new UC.DelegateName(DelegateFunction);
注意这里的DelegateFunction即为页面下的某个函数,改函数的参数和返回类型应该和UC.Delegate的参数和返回类型一致。

然后就万事大吉了。
iiboy 2004-08-04
  • 打赏
  • 举报
回复
學習中...
liuwei6102 2004-08-04
  • 打赏
  • 举报
回复
看看也值得
walkinhill 2004-08-04
  • 打赏
  • 举报
回复
在VB里面可以非常方便的定义和调用事件,比如说:

定义:Public Event MyEvent(Byval name as String)
调用:RaiseEvent MyEvent("abc")

在C#里面使用委托(delegate)来实现事件:

1)先定义事件处理函数的原型,即委托
public delegate void MyEvent(string name);

2)定义委托变量
public event MyEvent myEvent;

3) 触发事件:
首先判断委托变量是否为null,不为空,则调用事件处理函数
if( myEvent != null ){
myEvent("abc");
}
softchao 2004-08-04
  • 打赏
  • 举报
回复
具体问题具体解决
问题太大了
bitsbird 2004-08-04
  • 打赏
  • 举报
回复
event 关键字使您得以指定当代码中的某些“事件”发生时调用的委托。此委托可以有一个或多个关联的方法,当代码指示该事件已发生时将调用关联的方法。可使一个程序中的事件用于面向 .NET Framework 公共语言运行库的其他程序。

为了创建并使用 C# 事件,必须采取以下步骤:

创建或标识一个委托。如果正在定义自己的事件,还必须确保有与事件关键字一起使用的委托。如果已经预定义了事件(例如在 .NET Framework 中),则事件的使用者只需要知道委托的名称。
创建一个类,包含:
从委托创建的事件。
(可选)验证用 event 关键字声明的委托实例是否存在的方法。否则,该逻辑必须放置在引发此事件的代码中。
调用此事件的方法。这些方法可以重写一些基类功能。
此类定义事件。

定义一个或多个将方法连接到事件的类。所有这些类都包括:
使用 += 运算符和 -= 运算符将一个或多个方法与基类中的事件关联。
将与事件关联的方法的定义。
使用此事件:
创建包含事件声明的类对象。
使用定义的构造函数,创建包含事件定义的类对象。
该示例显示可以在接口中声明一个事件并在类中实现它。
// event_keyword.cs
using System;
public delegate void MyDelegate(); // delegate declaration

public interface I
{
event MyDelegate MyEvent;
void FireAway();
}

public class MyClass: I
{
public event MyDelegate MyEvent;

public void FireAway()
{
if (MyEvent != null)
MyEvent();
}
}

public class MainClass
{
static private void f()
{
Console.WriteLine("This is called when the event fires.");
}

static public void Main ()
{
I i = new MyClass();

i.MyEvent += new MyDelegate(f);
i.FireAway();
}
}
Nicholasqpl 2004-08-04
  • 打赏
  • 举报
回复
private static readonly object OnChangeEvent = new object();

public event EventHandler OnChange
{
add
{
Events.AddHandler(OnChangeEvent ,value);
}
remove
{
Events.RemoveHandler(OnChangeEvent ,value);
}
}

protected virtual void OnChangeEvent (EventArgs e)
{
EventHandler handler = (EventHandler)Events[OnChangeEvent];
if(handler != null)
handler(this,e);
}
triout 2004-08-04
  • 打赏
  • 举报
回复
可以给分了吧?

呵呵,几天忙,没有来,都饿晕了。
triout 2004-08-04
  • 打赏
  • 举报
回复
在C#里面,你要进行判断:

比如你有一个事件:

DataChanged

代理调用参数为:

(object sender,System.EventArgs e);

那么在函数:

OnDataChanged(System.EventArgs e)中:

if(DataChanged!=null)
DataChanged(this,e)


这里要注意的就是首先要判断当前的事件是否为空(null),如果不为空则执行事件。
Eddie005 2004-08-04
  • 打赏
  • 举报
回复
详细点,散分的说~~
lzyang 2004-08-04
  • 打赏
  • 举报
回复
delegate

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧