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#中 ...
随机推荐
- 超轻量级、高性能C日志库--EasyLogger
[ 声明:版权全部,欢迎转载.请勿用于商业用途. 联系信箱:armink.ztl@gmail.com] EasyLogger 1. 介绍 EasyLogger 是一款超轻量级(ROM<1.6K, ...
- scala actor编程之对象传递
scala 最吸引人的一点就是actor并发编程了.但是纵观scala官方文档,baidu文档,IBM文档都写的通过字符串传呀传,如果用作actor编程说明当然没有问题.但是在正式开放中,光传字符串就 ...
- mysql中子查询更新,得用别名表
通过查出最大id,来更新记录 update order set status = 'xx' where id in (select v.id from (select max(id) id from ...
- 如何在官网下载java JDK的历史版本
如何在官网下载java JDK的历史版本 http://jingyan.baidu.com/article/9989c746064d46f648ecfe9a.html 如何在官网下载java JDK的 ...
- linux shell 编程(一)
脚本:命令的堆砌,按照实际需要结合命令流程控制机制实现的源程序 linux 内核只能识别 elf格式的文件(可执行的可链接的文件) 脚本的第一行写 #!/bin/bash 表示脚本解释器
- Sobel边缘检测
Sobel算子:[-1 0 1 -2 0 2 -1 0 1] 用此算子与原图像做卷积,可以检测出垂直方向的边缘.算子作用在图像的第二列,结果是:200,200,200:作用在第三列,结果是 ...
- SpringMVC简单实例(看起来有用)
SpringMVC简单实例(看起来有用) 参考: SpringMVC 基础教程 简单入门实例 - CSDN博客http://blog.csdn.net/swingpyzf/article/detail ...
- R语言编程中的常见错误
R语言编程中的常见错误有一些错误是R的初学者和经验丰富的R程序员都可能常犯的.如果程序出错了,请检查以下几方面. 使用了错误的大小写.help().Help()和HELP()是三个不同的函数(只有第 ...
- java:eclipse4.4 安装tomcat插件
一.Eclipse 4.4下载地址:http://www.eclipse.org/downloads/ (Eclipse官网).Eclipse4.4版本默认已经集成了Ant和Maven插件,这点挺不错 ...
- Django 模版当中使用中文 UnicodeDecodeError at / 问题
Django 再次是当中字符编码问题 今天使用了bootstrap 当中的一些CSS 对自己的博客项目当中的一些东西进行美化 但是很奇怪的是 当 诸如按钮类的加入 中文字符后 就会提示 Unicode ...