2016.2.24 利用用户控件和委托完美解决快速选择txbbox

Posted mol1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016.2.24 利用用户控件和委托完美解决快速选择txbbox相关的知识,希望对你有一定的参考价值。

1、首先将tet_box和一个datagridview控件打包成用户控件uC_QuickTxtBox

2、在用户控件中定义执行主窗口的委托函数

3、主窗体中添加用户控件的load事件,赋值

uC_QuickTxtBox1.qrytp = 1; //定义此实例将进行点、线或机场的哪种查询

uC_QuickTxtBox1.myDelegate = butquery_Click; //查询完成后,映射委托执行哪个主窗体的回传函数。若不执行任何后续操作,此行可以省略

            //传统委托的写法是: uC_QuickTxtBox1.myDelegate = new UC_QuickTxtBox.BugTicketEventHandler(butquery_Click);

            //()中的butquery_Click并不代表是委托函数的参数,而是说明此委托等效于butquery_Click,

            //在定义时public delegate void BugTicketEventHandler(object sender, EventArgs e); 的参数才是真正的参数,

            //且必须与真实的butquery_Click(object sender, EventArgs e)参数的个数、类型必须一致

            //否则会报错 xx函数的重载与委托yy不匹配

 

4、用户控件中对应的委托

//抽象一个父窗口的事件或函数,参数个数和类型必须与父窗口真实事件或函数一致。

public delegate void AfterQueryEventHandler(object sender, EventArgs e); //对应主窗口butquery_Click事件的参数。

public AfterQueryEventHandler myDelegate; //实例化此委托

5、用户控件查到结果后调用

if(myDelegate!=null) //这句可兼容无论有无回传事件要调用

  myDelegate(null,null); //通过委托,映射执行窗体的button_Click事件

以上是关于2016.2.24 利用用户控件和委托完美解决快速选择txbbox的主要内容,如果未能解决你的问题,请参考以下文章

DevExpress控件cxGrid实现多列模糊匹配输入的完美解决方案

多线程委托Invoke解决winform界面卡死的问题,并带开关

完美解决微信video视频隐藏控件和内联播放问题

[C#]Thread与委托实现定时刷新数据功能

C#复习笔记--C#2:解决C#1的问题(进入快速通道的委托)

WinFrom通过委托传递事件