日期:2014-05-19  浏览次数:20723 次

请教关于委托与事件的一个具体应用
对委托与事件只理解了一个表皮,现在有这样一个需求,希望各位高人帮我实现一下:
1、新建一个windows控件库,不是应用程序哦,在上面放一个TextBox控件
2、为该控件库增加一个TextChange事件,要求当TextBox产生了TextChange事件时,调用该自定义控件的TextChange事件,这样,我就可以将TextBox封装起来而不用暴露给具体的应用程序了,一切都在内部解决.
      不知道表达清楚没有,也就是说,当TextBox的文本改变时,激发该自定义控件的TextChange事件,从而达到既能利用TextBox的文本改变事件,又不暴露该文本框的目的,该如何实现呢?最好有具体代码.

------解决方案--------------------
为你的控件可以这样添加自定义事件:
//定义
public event EventHandler MyTextBoxChanged;

//使用:

if (this.MyTextBoxChanged!=null)
{
this.MyTextBoxChanged(this, new EventArgs());//引发事件。
}

------解决方案--------------------
在你的代码里可以参考如下的代码来写:
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace TextBoxApp
{
public partial class UserControl1 : UserControl
{
public event EventHandler MyTextBoxChanged;
public UserControl1()
{
InitializeComponent();

this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
if (this.MyTextBoxChanged != null)
{
EventArgs args = new EventArgs();
this.MyTextBoxChanged(this, args);
}
}
}
}



------解决方案--------------------
事件也是基于委托的,所以你先把委托学好了,事件也就都明白了。可以找一些例子来看看,这种东西有些抽象,所以不太好理解。