C#中在定義事件委托時怎樣跨窗體傳遞參數


場景

C#中委托與事件的使用-以Winform中跨窗體傳值為例:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100150700

參照上文在定義事件時傳遞參數為簡單的string,如果要傳遞比較復雜的參數,那么就可以使用對象將參數進行封裝。

博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現

在窗體A中定義委托與事件

public delegate void RefreshChartInOneDelegete(XYModel xYModel);
public static event RefreshChartInOneDelegete OnRefreshChartInOne;

 

其中XYModel就是自己封裝的參數的Model,具體可以根據需要自己封裝。

 

public class XYModel
    {
        //存儲X軸屬性
        private XAxisModel xAxisModel;
        //存儲Y軸屬性
        private List<YAxisModel> yAxisModelList;

        
        public XAxisModel XAxisModel
        {
            get { return xAxisModel; }
            set { xAxisModel = value; }
        }

        public List<YAxisModel> YAxisModelList
        {
            get { return yAxisModelList; }
            set { yAxisModelList = value; }
        }
    }

 

定義觸發器

 xYModel.YAxisModelList = yAxisModelList;
            if (OnRefreshChartInOne != null)
            {
                OnRefreshChartInOne(xYModel);
                
            }

 

然后在窗體B中進行事件訂閱

FrmChartOptionInOneCurCom.OnRefreshChartInOne += new FrmChartOptionInOneCurCom.RefreshChartInOneDelegete(ChartCompareHelper_OnRefreshChart);

 

在窗體B中編寫具體的實現

 private void ChartCompareHelper_OnRefreshChart(XYModel xYModel)
        {
            xYModelStore = xYModel;
            ChartCompareHelper.RefreshPaneComInOne(this.zedGraphControl1,xYModel.YAxisModelList);
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM