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

2025-01-01 05:20:07
推荐回答(2个)
回答1:

//啥也不多说了,代码更简洁明了。

    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窗体类的外面。

回答2:

1 子窗口定义一个委托类型,当有需要时调用此委托
2. 主窗口实例化子窗口时,将此委托进行注入,主窗口内定义一个函数用来修改控件。