您的位置:首页 > 编程语言 > C#

C#委托的一些应用,个人肤浅的一些操作

2011-11-30 14:43 459 查看
分别建立两个窗口(Form1,Form2),各在窗口拉两个textbox,在Form2的textbox里输入文字,Form1的textbox文本框里显示一模一样的内容

Form1的代码如下:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Form2 f2 = new Form2();
private void Form1_Load(object sender, EventArgs e)
{
f2.SendTextFun += new Form2.SendText(Send);
f2.Show();
}
public void Send(string str)
{
this.textBox1.Text = str;
}
}

Form2的代码如下:

public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{

}
public delegate void SendText(string str);
public SendText SendTextFun;

private void textBox1_TextChanged(object sender, EventArgs e)
{
SendTextFun(this.textBox1.Text);
}
}


另一种方法,也用到委托,是写一个类,代码如下

类:

/// <summary>
/// TransferData 的摘要说明。
/// </summary>
///
public delegate void SendDataHandler(object o);
public class TransferData
{
public event SendDataHandler DataSended;
public void SendData(object o)
{
o.ToString();
if (DataSended != null)
DataSended(o);
}
}


在主窗体中,写上:

RMFCCls.ReaderCard.TransferData TransferCard = null;//实例化这个类
private void frmMain_Load(object sender, EventArgs e)
{
TransferCard = new RMFCCls.ReaderCard.TransferData();
}

在要打开的窗体上,传值

Product pd = new Product(TransferCard);
pd.ShowDialog();

下面这句代码是要传的参数,可以放在任何地方

TransferCard.SendData(CardNo.ToString());

在要显示的窗体上,先构造一个函数,获取传过来的值,写上代码如下:

RMFCCls.ReaderCard.TransferData TransferCard = null;
public Product(RMFCCls.ReaderCard.TransferData transferCard)
: this()
{
TransferCard = transferCard;
}

把数据显示在相应的文本框上,代码如下:

private void Product_Load(object sender, EventArgs e)
{
TransferCard.DataSended += new Reasee.RMFCCls.ReaderCard.SendDataHandler(CardNoDataSended);
}
private void CardNoDataSended(object o)
{
txtCardNo.Text = o.ToString();
}

在窗体关闭时,清空参数:

//关闭窗体
private void Product_FormClosing(object sender, FormClosingEventArgs e)
{
TransferCard.DataSended -= new Reasee.RMFCCls.ReaderCard.SendDataHandler(CardNoDataSended);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: