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