c# 子窗体form2中更新主窗体form1中的控件textbox内容的方式?

1、比如在form2的button_click中,更新form1的textbox的内容,但不通过创建新的线程去更新,此时应该怎样做?需要用invoke吗?2、如果通过新的... 1、比如在form2的button_click中,更新form1的textbox的内容,但不通过创建新的线程去更新,此时应该怎样做?需要用invoke吗?
2、如果通过新的线程更新textbox,那么使用invoke的方式下,各个函数及委托都是在放在哪些类中?
大概知道流程,但是整体还是很模糊,一直弄不明白,所以求教于大家,谢谢。
展开
 我来答
782762625
2017-09-18
知道答主
回答量:94
采纳率:0%
帮助的人:21.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窗体类的外面。

greystar_cn
推荐于2017-09-18 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17260
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部
1 子窗口定义一个委托类型,当有需要时调用此委托
2. 主窗口实例化子窗口时,将此委托进行注入,主窗口内定义一个函数用来修改控件。
追问
也就是在这种情况下都是用的同一线程,即UI线程吗?除非在form2中另创建线程,否则就不用invoke,对吗?
追答
你的理解对的。
委托不是线程。这二者有区别的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式