c# 子窗体form2中更新主窗体form1中的控件textbox内容的方式?
1、比如在form2的button_click中,更新form1的textbox的内容,但不通过创建新的线程去更新,此时应该怎样做?需要用invoke吗?2、如果通过新的...
1、比如在form2的button_click中,更新form1的textbox的内容,但不通过创建新的线程去更新,此时应该怎样做?需要用invoke吗?
2、如果通过新的线程更新textbox,那么使用invoke的方式下,各个函数及委托都是在放在哪些类中?
大概知道流程,但是整体还是很模糊,一直弄不明白,所以求教于大家,谢谢。 展开
2、如果通过新的线程更新textbox,那么使用invoke的方式下,各个函数及委托都是在放在哪些类中?
大概知道流程,但是整体还是很模糊,一直弄不明白,所以求教于大家,谢谢。 展开
2个回答
展开全部
//啥也不多说了,代码更简洁明了。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnOpen_Click(object sender, EventArgs e)
{
var form2=new Form2();
form2.UpdateMessage = UpdateMsg;
form2.ShowDialog();
}
void UpdateMsg(string msg)
{
Text = msg;
}
}
public partial class Form2 : Form
{
public UpdateMessageDelegate UpdateMessage { get; set; }
public Form2()
{
InitializeComponent();
}
private void tbContent2_TextChanged(object sender, EventArgs e)
{
var msg = tbContent2.Text.Trim();
if (UpdateMessage!=null)
{
UpdateMessage(msg);
}
}
}
public delegate void UpdateMessageDelegate(string msg);
UpdateMessageDelegate这个委托我单独定义到了一个类文件中,当然也可以定义在Form窗体类的外面。
推荐于2017-09-18 · 知道合伙人软件行家
关注
展开全部
1 子窗口定义一个委托类型,当有需要时调用此委托
2. 主窗口实例化子窗口时,将此委托进行注入,主窗口内定义一个函数用来修改控件。
2. 主窗口实例化子窗口时,将此委托进行注入,主窗口内定义一个函数用来修改控件。
追问
也就是在这种情况下都是用的同一线程,即UI线程吗?除非在form2中另创建线程,否则就不用invoke,对吗?
追答
你的理解对的。
委托不是线程。这二者有区别的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询