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