日期:2014-05-17  浏览次数:20769 次

winform多线程与委托的问题
情景:有form1与form2两个窗体,启动form1 form1的button.click打开form2,在form1的textbox中输入文本在form2的textbox中同步显示。

问题1:当我想通过创建线程+showDialog(代码注释部分)的方式时,在form1中输入文本在form2中不能同步显示。
     当使用 f2.show()方法时是可以显示的。
问题2:使用f2.shhow()时 当我把DST = f2.setContent这句代码放在showForm2_Click事件中 功能能实现,当放在textBox1_KeyUp事件中却不能实现

高人求解释

代码如下
   from1
        //在另一个线程中打开Form2
        //delegate void DelegateShowForm();
        //public void ShowForm()
        //{
        //    Form2 f2 = new Form2();
        //    f2.ShowDialog();
        //}


#region 同步委托声明
        public delegate void DelegateSetText(string T);
        Form2 f2 = new Form2();
        DelegateSetText DST;
#endregion

        private void showForm2_Click(object sender, EventArgs e)
        {
            //DelegateShowForm DSF = new DelegateShowForm(ShowForm);
            //ThreadStart Ts = new ThreadStart(DSF);
            //Thread th = new Thread(Ts);
            //th.Start();

            Form2 f2 = new Form2();
            f2.Show();
            DST = f2.setContent;
        }
        private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            string text = textBox1.Text;
            DST(text);
        }

form2
         public void setContent(string T)
        {
            this.textBox1.Text = T;
        }
多线程 WinForm 委托