C#事件小記

來源:互聯網
上載者:User

    事件、委託一直是我接觸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);

        }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.