分别建立两个窗口(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);
}