C#委托、自定义事件

Helsing 2011-02-28 11:44:19
小弟对C#中的委托以及事件不甚理解,现在想做一个自定义的事件,请各位大哥大姐们帮忙!
我想实现的事件功能是这样的:
Form1中有一个变量:private bool bl = false;
一个按钮:Button1,点击按钮执行事件:bl = true;
一个函数:private void function(){MessageBox.Show("OK")}
自定义事件功能:当bl值发生变化,执行function()命令,也就是说我点击按钮的时候,bl值不是发生变化了吗,那么它将出发自定事件,执行function()命令。
不知道我描述清楚了没有,我想做的这个自定义事件希望是跟C#提供的系统事件调用方式是一样的,比如Button1的Click事件,就写:this.button1.Click += new System.EventHandler(this.button1_Click);
不知道可以实现不,请各位高手指教!
PS:不要给我控制台的示例程序看了,小弟初学,水平有限,那部分看的懂,但实际应用就有点困难了。
...全文
97 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
redshiliu 2011-02-28
  • 打赏
  • 举报
回复
不用这么麻烦吧,你直接在bl=true后面加上你要调用的过程不行吗?用事件也可以如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private MyClass myClass;
public Form1()
{
InitializeComponent();
myClass = new MyClass();
myClass.StatusChanged += new MyClass.HandlerStatusChanged(Proc);
}

private void button1_Click(object sender, EventArgs e)
{
myClass.BoolStatus = true;
}

private void Proc(object sender, EventArgs e)
{
MessageBox.Show("BoolStatus has changed", sender.ToString());
}
}

public class MyClass
{
public delegate void HandlerStatusChanged(object sender,EventArgs e);
public event HandlerStatusChanged StatusChanged;
private bool boolStatus;
public MyClass()
{
boolStatus = false;
}

public bool BoolStatus
{
get { return boolStatus; }
set
{
boolStatus = value;
StatusChanged(this, new EventArgs());
}
}
}
}
Helsing 2011-02-28
  • 打赏
  • 举报
回复
额,选了个吃饭时间,没人回答啊
Helsing 2011-02-28
  • 打赏
  • 举报
回复
兄弟,你太帅了!!!十分感谢!!!

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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