c# form1 form2 form3中,form3如何刷新form1?全部非父子窗体。要具体的代码,谢谢

c# form1 form2 form3中,form3如何刷新form1?全部非父子窗体。要具体的代码,谢谢,第1张

可以用委托

在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。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11826196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存