C#事件小记

    事件、委托一直是我接触C#以来的盲点,随着不断的接触、碰到过一些,在同事的帮助下,慢慢开始用委托、甚至是事件。

本案例是项目中SignalEditor里面的一个应用。就是实现当属性改变之后,绘图界面会重新绘图。所以,实现分了几个部分,分别放在几个文档下面。

1.引发事件

        public event EventHandler PropertyChange;

        protected void PropertyChanged()

        {

            if (PropertyChange != null)

            {

                PropertyChange(this, new EventArgs());

            }

        }

    在父类SignalGenerator中定义.

2.触发事件

        private double value=2;

        [DisplayName("恒值")]

        public double Value

        {

            get { return this.value; }

            set

            {

                this.value = value;

                PropertyChanged();

            }

        }

  在这里,每当属性改变,就调用PropertyChange函数

  在每一个信号实现类,如ConstSignal中将函数PropertyChange添加到需要触发的地方。

3.订阅事件

  订阅事件就是在事件函数里面添加将执行的函数,一旦PropertyChange被触发,实际执行的是注册了的事件signalGenerator_PropertyChange.

            if (view != null)

            {

                view.PropertyGrid.SelectedObject = signalGenerator;

            }

            try

            {

                signalGenerator.PropertyChange += new EventHandler(signalGenerator_PropertyChange);

            }

            catch

            { }

  定义事件触发后执行的动作函数

        void signalGenerator_PropertyChange(object sender, EventArgs e)

        {

            TsmiClear_Click(sender, e);

            TsmiDraw_Click(sender, e);

        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值