在Form3,定义
public delegate void MyDelegate(string Sr)//定义该委托的事件
再定义
public event MyDelegateSign MyEventSign
在Form3,的关闭事件里写
private void Setting_FormClosing(object sender, FormClosingEventArgs e)
{
MyEventSign(this.textBox1.Text)
}
再在Form1,定义一个事件
Form3 frm=new Form3()
frm.MyEventSign += new MyDelegateSign(set_MyEventSign)//注册form3_MyEvent方法的MyEvent事件
frm.Show()
}
void set_MyEventSign(string sr)//将签名与输入法回调
{
TextBox1.Text=sr//如此就通过Form3的TextBoxt1刷新了Form1的TextBox1
}
使用委托,在form1中声明委托,并定义委托函数,函数的其中一个参数是datagridview中的数据。在form2中注册这个委托,并把更新的数据通过委托函数传到form1中,这样就可以实时刷新了。方法多,第一种定义一个公共静态变量,然后封装textbox,这种能刷新值但是不靠谱,为什么?延迟,我不做介绍,我主要介绍第二种,委托。在form2里面写上委托定义
public delegate void SendM(string str)
public static event SendM excur
在form2里面excur(string str)这个事件就是他委托出去的事件,你在form2中触发excur(str)就意味着要触发这个事件,这个事件可以跨越form2订阅在其他对象中,窗体也可以。
form1中我们订阅一下就可以了(前提form2要定义好):
form2.excur += (string str) =>{
textBox1.Text=str
}
你看看在form1中订阅了form2的事件,form2触发excur(str),form1就按规矩赋值textBox1是str。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)