一、委托定义

   1:     public class TestData
   2:      {
   3:          //定义委托
   4:          public delegate void Get_TestDataEventHandler(Get_TestDataEventArgs e);
   5:          //定义事件
   6:          public event Get_TestDataEventHandler Get_TestData;
   7:          //定义数据类型 传递和获取 Observer所感兴趣的信息
   8:          //继承EventArgs类     
   9:          public class Get_TestDataEventArgs : EventArgs
  10:          {
  11:              //传递两个参数 strWhere strIN
  12:              //获取一个数据 dataset 类型  执行查询后返回的数据集
  13:              public readonly string strWhere,strIN;
  14:              private DataSet ds;        
  15:             
  16:              /// <summary>
  17:             /// 参数类型初始化
  18:             /// </summary>
  19:             /// <param name="strWhere">数据库查询语句 WHERE </param>
  20:             /// <param name="strIN">数据库查询语句 IN </param>
  21:              public Get_TestDataEventArgs(string strWhere,string strIN)
  22:              {
  23:                  this.strWhere = strWhere;
  24:                  this.strIN = strIN;
  25:              }          
  26:              // 设置方法执行完毕后的Dataset类型的数据           
  27:              public DataSet Data
  28:              {
  29:                  set { ds = value; }
  30:                  get { return ds; }
  31:              }
  32:          }
  33:          private DataSet _testdata;
  34:   
  35:          /// <summary>
  36:          /// 返回数据 DataSet
  37:          /// </summary>
  38:          public DataSet Testdata
  39:          {
  40:              get { return _testdata; }
  41:          }
  42:   
  43:         //判断事件是否有赋值 
  44:          protected virtual void onGet_TestData(Get_TestDataEventArgs e)
  45:          {
  46:              if (Get_TestData != null)
  47:              {
  48:                  Get_TestData(e);
  49:                  _testdata = e.Data;
  50:              }
  51:          }
  52:          /// <summary>
  53:          /// 开始获取数据
  54:          /// </summary>
  55:          /// <param name="e"></param>
  56:          public void Start(Get_TestDataEventArgs e)
  57:          {
  58:              onGet_TestData(e);
  59:          }
  60:   
  61:      }

二、调用委托方法定义

        /// <summary>
/// 多芯查询 有IN条件
/// </summary>
/// <param name="e"></param>
public void Getdata_Method_Multicore(TestData.Get_TestDataEventArgs e)
{
string sql = "SELECT * ";
sql += " WHERE (Name IN ("+e.strIN+"))";
e.Data = dbs.Query(sql);
} /// <summary>
/// 双并查询 有IN条件
/// </summary>
/// <param name="e"></param>
public void Getdata_Method_TwainCore(TestData.Get_TestDataEventArgs e)
{
string sql = " SELECT * ";
sql += " WHERE "+e.strWhere+" AND (Result LIKE N'%PASS%') AND (Name IN ("+e.strIN+"))";
e.Data = dbs.Query(sql);
} /// <summary>
/// 单芯查询 无 IN条件
/// </summary>
/// <param name="e"></param>
public void GetData_Method_OneCore(TestData.Get_TestDataEventArgs e)
{
string sql = " SELECT * ";
sql += " WHERE " + e.strWhere + " AND (Result LIKE N'%PASS%') ";
e.Data = dbs.Query(sql);
}

三、应用

          TestData _TestData = new TestData(); 
_TestData.Get_TestData += _Method_User_3D.GetData_Method_OneCore;   //3D 数据查询方法设置 

          string strWhere = "Where 语句";                    //Where 语句
string strIN = "IN 语句"; //IN 语句 为空
Maticsoft.DAL.TestData.Get_TestDataEventArgs e = new DAL.TestData.Get_TestDataEventArgs(strWhere, strIN); //委托数据类型初始化
_TestData.Start(e); //开始查询
DataSet ds = _TestData.Testdata; //查询到的数据
if (ds.Tables[0].Rows.Count > 0) //如果有记录 则表示为良品
{
_result_3D = true;
}
else { _result_3D = false; }

C# 利用委托和事件 传入一个参数进行进行计算并返回结果的更多相关文章

  1. ABP前端-关于不同按钮调用同一事件传入的参数变为相同的数据

    现象: 在一个含有的Tab标签的页面,两个标签页的新增按钮调用同一个新增事件并传入不同的参数,但实际在调用的的时候传入的参数都变成了最后一个按钮传入的值,即,不论点击哪个Tab按钮的新增事件,最终传入 ...

  2. js利用点击事件做一个简单的计算器

    先放一个样式图: 源代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  3. C# 利用委托事件进行窗体间的传值(简化)

    定义委托 public delegate void SendMessageToChildForms(string s); //定义了一个参数是string ,无返回值的委托,名为 SendMessag ...

  4. C# 利用委托事件进行窗体间的传值(新手必看)

    引言: 窗体间传值是每个学习WinForm新手的常见问题,最初级的方法就是 在窗体中先获取到要接受值窗体.然后通过.得到某个空间或者属性,直接赋值,这个需要接收放的窗体属性或者空间必须是public ...

  5. 9、委托、事件、Lambda

    开始 关于委托,肯定是要有问题的. 第一个问题,委托用来干什么? 看.net中的表述:在.net平台下,委托类型用来定义和相应应用程序中的回调.(回调?处理内存中两个实体双向通信的一种技术.)   第 ...

  6. C#委托与事件

    一.在控制台下使用委托和事件 我们都知道,C#中有"接口"这个概念,所谓的"接口"就是定义一套标准,然后由实现类来具体实现其中的方法,所以说"接口,是 ...

  7. C#委托与事件--简单笔记

    委托 简单记录点东西 适合似懂非懂的朋友看看 委托类型用来定义和响应应用程序中的回调. 借此可以设计各种有面向对象特性的代码模式.下面要说的事件在我看来就是委托的一种实现,再深一步讲,利用委托加事件, ...

  8. C#委托与事件学习笔记

    委托事件学习笔记 本文是学习委托和事件的笔记,水平有限,如有错漏之处,还望大神不吝赐教. 什么是委托?从字面意思来解释,就是把一个动作交给别人去执行.在实际开发中最常用的就是使一个方法可以当做一个参数 ...

  9. 再谈C#委托与事件

    之前写过一篇关于C#委托与事件的文章(见<C#委托和事件例析>),不过还是收到一些网友的提问.所以,今天再换另一个角度来详解一下这个问题. 一.在控制台下使用委托和事件 我们都知道,C#中 ...

随机推荐

  1. apche安装教程

    从Apache官网下载windows安装版的Apache服务器了, 现在分享给大家.   1 进入apache服务器官网http://httpd.apache.org/,这里我们以下载稳定版的 htt ...

  2. Android JSON And Object Cast

    Ref:JSON字符串转换成Java实体类(POJO) Ref:Java.Json转换方式之二:Jackson Ref:Jackson 框架,轻易转换JSON Ref:几种序列化协议(protobuf ...

  3. MySQL——视图

    核心知识点: 1.视图定义 2.视图的好处:安全.节约资源.操作简单,数据的同一性 3.视图的基本操作 一.视图概论 视图是一个虚拟表,其内容由查询定义. 同真实的表一样,视图包含一系列带有名称的列和 ...

  4. ubuntu vim退出时出错

    E505: "vimrc" is read-only (add ! to override) wq退出时加!强制保存退出 "vimrc" E212: Can't ...

  5. where find

    where查询不到返回ActiveRecord::Relation [] find返回异常ActiveRecord::RecordNotFound: Couldn't find  where 查到返回 ...

  6. 牛客小白月赛1 A 简单题 【数学】

    题目链接 https://www.nowcoder.com/acm/contest/85/A 思路 这个 就是 E 但是 运算的时候 要保证 其精度 AC代码 #include <cstdio& ...

  7. SQL语法结构

    目录 一.增 1.增加字段 2.新建约束 二.删 1.删除字段 2.删除约束 三.改 1.修改字段 一.增 1.增加字段: ALTER TABLE [表名] ADD [字段名] NVARCHAR () ...

  8. dojo 官方翻译 dojo/json 版本1.10

    官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/json.html#dojo-json require(["dojo/json&q ...

  9. shiro1

    基于角色的访问控制 RBAC(role based access control),基于角色的访问控制. 比如: 系统角色包括 :部门经理.总经理.(角色针对用户来划分) 系统代码中实现: //如果该 ...

  10. linux常见命令2

    systemctl set-hostname HOSTNAME  在centos7上设置主机名,永久有效 curl -O -L http://www.gnu.org/software/gettext/ ...