场景

在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#中在多个地方调用同一个触发器从而触发同一个自定义委托的事件相关推荐

  1. C语言中的函数指针、函数的直接/间接调用、C# 委托(自定义委托、内置泛型委托、委托的实例化、委托的一般使用(模板方法、回调方法)、泛型委托、多播委托、同步/异步使用委托)

    文章目录 C语言中的函数指针 函数的直接调用与间接调用 Java中没有与委托对应的功能实体 C# 委托 C# 自定义委托类型 C# 内置泛型委托类型 委托的实例化 委托也支持泛型的使用 委托的一般使用 ...

  2. python中函数的调用_慢步python,编程中函数的概念,python中函数的声明和调用

    函数,曾经是一个很高大尚的概念.笔者是在高中数学里认识的函数,先是从y=2x+3 这条代数式开始的.y是因变量,x是自变量,y因为x取值的变化而变化. 再后来式子变成这样:f(x)=2x+3,f(x) ...

  3. kotlin调用类中的方法_一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用

    kotlin调用类中的方法 by Oleksii Fedorov 通过Oleksii Fedorov 一种轻松的方法来测试Kotlin中令人沮丧的静态方法调用 (A stress-free way t ...

  4. Ajax 1.0 中使用web控件调用后台方法的用法.

    今天在做页面文本框审核的时候发现个Ajax 1.0 中使用web控件调用后台方法的一个不爽的地方. 把该调用方法发上来供大家参考. 首先我们创建一个MasterPage.master文件. 在页面上放 ...

  5. matlab 调用函数本身,怎么在matlab自定义函数中再调用一个自定义函数?

    Matlab自定义函数的七种方法1.函数文件+调用命令文件:需单独定义一个自定义函数的M文件.2.函数文件+子函数:定义一个具有多个自定义函数的M文件.3.Inline:无需M文件,直接定义.4.匿名 ...

  6. python中函数的定义包括_python中函数的定义及调用

    python中函数的定义及使用方法 1.函数的概念:函数是将具有独立功能的代码块组织为一个整体,使其具有特殊功能的代码集; 2.函数的作用:使用函数可以加强代码的复用性,提高程序编写的效率; 3.函数 ...

  7. C++对象模型8——构造函数和析构函数中对虚函数的调用、全局对象构造和析构、局部static数组的内存分配

    一.构造函数和析构函数中对虚函数的调用 仍然以https://blog.csdn.net/Master_Cui/article/details/109957302中的代码为例 base3构造函数和析构 ...

  8. Android 在Fragment中执行onActivityResult不被调用的简单解决方法

    Android 在Fragment中执行onActivityResult不被调用的简单解决方法 参考文章: (1)Android 在Fragment中执行onActivityResult不被调用的简单 ...

  9. 在Ruby中获取system()调用的输出

    本文翻译自:Getting output of system() calls in Ruby 如果我在Ruby中使用Kernel#system调用命令,我该如何获得它的输出? system(" ...

最新文章

  1. 3dsmax 长动画导入 three.js 转变成 多个动画
  2. 警告1909。无法创建快捷方式VMware Workstation Pro.Ink。解决方法(附 VMware_workstation 12的安装方法)
  3. C语言科技感图片,科技感与运动范十足,几何C黑棚图曝出,年轻消费者又多了新选择...
  4. 数据建模中的大坑判断
  5. 解决iview表单中时间选择起的验证失败问题
  6. 面试必问之JVM原理
  7. python中的OrderedDict
  8. 打开文件对话框在xp和win7上的实现文件任意多选
  9. Scala深入浅出实战经典---001-Scala开发环境搭建和HelloWorld解析
  10. Wireshark实战分析之IP协议(三)
  11. java表述环形链表_数据结构环形链表(java实现)
  12. VVC/JEM代码学习16:xCheckRDCostMerge2Nx2N
  13. 计算机网络医院拓扑图方案设计,【方案】某医院计算机网络综合布线系统设计...
  14. pywin32、win32api、win32gui、win32com、win32con 都是啥?
  15. 发动机电控系统:T3温度模型标定
  16. 中值定理9-极值点判断
  17. 什么是AWS认证,有什么用?
  18. html+css基础教程之html标题学习
  19. 5种常用的四轴飞行器PID算法讲解集合
  20. 2009年我国报刊发行创新的五个关键词

热门文章

  1. Java进阶:ReentrantLock和Condition基本使用
  2. php绑定变量,php动态绑定变量的用法
  3. 0x0000050蓝屏srvsys_win7电脑出现蓝屏0x00000050提示srv.sys如何解决[多图]
  4. 用java制作扑克牌_阿里三面被挂,幸获内推,历经5轮终于拿到口碑offer(java研发)...
  5. Linux安装最新Redis
  6. mysql 插入数据 自增长_MySQL ------ 插入数据(INSERT和insert select)(二十)
  7. mongo 多条件筛选_如何制作提交按钮,实现多条件筛选
  8. 张莉python 玩转数据答案_大学mooc2020年用Python玩转数据课后答案
  9. 行星齿轮设计手册_合理选用行星齿轮传动装置的侧隙
  10. 光储充一体化充电站_广东东莞首座光储充一体化智能充电站 “变废为宝”收益可观...