C# 利用委托和事件 传入一个参数进行进行计算并返回结果
一、委托定义
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# 利用委托和事件 传入一个参数进行进行计算并返回结果的更多相关文章
- ABP前端-关于不同按钮调用同一事件传入的参数变为相同的数据
现象: 在一个含有的Tab标签的页面,两个标签页的新增按钮调用同一个新增事件并传入不同的参数,但实际在调用的的时候传入的参数都变成了最后一个按钮传入的值,即,不论点击哪个Tab按钮的新增事件,最终传入 ...
- js利用点击事件做一个简单的计算器
先放一个样式图: 源代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- C# 利用委托事件进行窗体间的传值(简化)
定义委托 public delegate void SendMessageToChildForms(string s); //定义了一个参数是string ,无返回值的委托,名为 SendMessag ...
- C# 利用委托事件进行窗体间的传值(新手必看)
引言: 窗体间传值是每个学习WinForm新手的常见问题,最初级的方法就是 在窗体中先获取到要接受值窗体.然后通过.得到某个空间或者属性,直接赋值,这个需要接收放的窗体属性或者空间必须是public ...
- 9、委托、事件、Lambda
开始 关于委托,肯定是要有问题的. 第一个问题,委托用来干什么? 看.net中的表述:在.net平台下,委托类型用来定义和相应应用程序中的回调.(回调?处理内存中两个实体双向通信的一种技术.) 第 ...
- C#委托与事件
一.在控制台下使用委托和事件 我们都知道,C#中有"接口"这个概念,所谓的"接口"就是定义一套标准,然后由实现类来具体实现其中的方法,所以说"接口,是 ...
- C#委托与事件--简单笔记
委托 简单记录点东西 适合似懂非懂的朋友看看 委托类型用来定义和响应应用程序中的回调. 借此可以设计各种有面向对象特性的代码模式.下面要说的事件在我看来就是委托的一种实现,再深一步讲,利用委托加事件, ...
- C#委托与事件学习笔记
委托事件学习笔记 本文是学习委托和事件的笔记,水平有限,如有错漏之处,还望大神不吝赐教. 什么是委托?从字面意思来解释,就是把一个动作交给别人去执行.在实际开发中最常用的就是使一个方法可以当做一个参数 ...
- 再谈C#委托与事件
之前写过一篇关于C#委托与事件的文章(见<C#委托和事件例析>),不过还是收到一些网友的提问.所以,今天再换另一个角度来详解一下这个问题. 一.在控制台下使用委托和事件 我们都知道,C#中 ...
随机推荐
- apche安装教程
从Apache官网下载windows安装版的Apache服务器了, 现在分享给大家. 1 进入apache服务器官网http://httpd.apache.org/,这里我们以下载稳定版的 htt ...
- Android JSON And Object Cast
Ref:JSON字符串转换成Java实体类(POJO) Ref:Java.Json转换方式之二:Jackson Ref:Jackson 框架,轻易转换JSON Ref:几种序列化协议(protobuf ...
- MySQL——视图
核心知识点: 1.视图定义 2.视图的好处:安全.节约资源.操作简单,数据的同一性 3.视图的基本操作 一.视图概论 视图是一个虚拟表,其内容由查询定义. 同真实的表一样,视图包含一系列带有名称的列和 ...
- ubuntu vim退出时出错
E505: "vimrc" is read-only (add ! to override) wq退出时加!强制保存退出 "vimrc" E212: Can't ...
- where find
where查询不到返回ActiveRecord::Relation [] find返回异常ActiveRecord::RecordNotFound: Couldn't find where 查到返回 ...
- 牛客小白月赛1 A 简单题 【数学】
题目链接 https://www.nowcoder.com/acm/contest/85/A 思路 这个 就是 E 但是 运算的时候 要保证 其精度 AC代码 #include <cstdio& ...
- SQL语法结构
目录 一.增 1.增加字段 2.新建约束 二.删 1.删除字段 2.删除约束 三.改 1.修改字段 一.增 1.增加字段: ALTER TABLE [表名] ADD [字段名] NVARCHAR () ...
- dojo 官方翻译 dojo/json 版本1.10
官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/json.html#dojo-json require(["dojo/json&q ...
- shiro1
基于角色的访问控制 RBAC(role based access control),基于角色的访问控制. 比如: 系统角色包括 :部门经理.总经理.(角色针对用户来划分) 系统代码中实现: //如果该 ...
- linux常见命令2
systemctl set-hostname HOSTNAME 在centos7上设置主机名,永久有效 curl -O -L http://www.gnu.org/software/gettext/ ...