C#中在多个地方调用同一个触发器从而触发同一个自定义委托的事件
生活随笔
收集整理的這篇文章主要介紹了
C#中在多个地方调用同一个触发器从而触发同一个自定义委托的事件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
在Winfom中可以在頁面上多個按鈕或者右鍵的點擊事件中觸發同一個自定義的委托事件。
實現
在位置一按鈕點擊事件中觸發
string parentPath = System.IO.Directory.GetParent("指定路徑").ToString(); //獲取指定路徑的父級目錄并作為參數調用工具類的方法 DataTreeListHelper.TaskView(parentPath);在位置二右鍵點擊觸發
將自定義右鍵的方法定義在上面的工具類中,在工具類中直接調用觸發的方法
System.Windows.Forms.MenuItem mnuTaskView = new System.Windows.Forms.MenuItem();mnuTaskView.Text = "查看任務";mnuTaskView.Click += delegate(object s, EventArgs ea){string parentPath? = Directory.GetParent(strIdValue).ToString();TaskView(parentPath);};在工具類中的觸發的方法中
public static void TaskView(string currentPath){//判斷當前路徑下是否有任務文件List<string> taskFileList = FileHelper.GetFileListWithExtend(new DirectoryInfo(currentPath), "*.pcj");if(taskFileList == null || taskFileList.Count ==0){XtraMessageBox.Show("當前路徑下沒有任務文件");}else if (taskFileList.Count > 1){XtraMessageBox.Show("當前路徑下含有多個任務文件");}else{FrmTaskView taskView = new Dialog.FrmTaskView();taskView.Show();//觸發查看任務事件TriggerTaskView(taskFileList[0]);}進行邏輯的判斷和觸發
在觸發器中觸發事件
public static void TriggerTaskView(string taskPath){if (OnTaskView != null){OnTaskView(taskPath);}}在當前工具類中自頂義委托和事件
public delegate void TaskViewDelegete(string taskPath); public static event TaskViewDelegete OnTaskView;再要執行事件的窗體的構造方法中進行事件的訂閱
public FrmTaskView(){InitializeComponent();DataTreeListHelper.OnTaskView -= DataTreeListHelper_OnTaskView;DataTreeListHelper.OnTaskView += DataTreeListHelper_OnTaskView;}編寫具體實現的業務邏輯
?private void DataTreeListHelper_OnTaskView(string taskPath){if (taskPath != null){this.taskUserControl1.InitialTaskUserControl(taskPath);}}為了以防事件沒法解除訂閱,在窗口關閉事件中進行事件的取消訂閱
private void FrmTaskView_FormClosing(object sender, FormClosingEventArgs e){DataTreeListHelper.OnTaskView -= DataTreeListHelper_OnTaskView;}?
總結
以上是生活随笔為你收集整理的C#中在多个地方调用同一个触发器从而触发同一个自定义委托的事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DevExpress的TreeList实
- 下一篇: Winform中在使用VS+svn进行协