小弟对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:不要给我控制台的示例程序看了,小弟初学,水平有限,那部分看的懂,但实际应用就有点困难了。

解决方案 »

  1.   

    不用这么麻烦吧,你直接在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());
                }
            }
        }
    }