有4个窗体 form1,form2,form3,form4. form1是主窗体是打开form2或者form3窗体的. form2和form3都负责打开form4,
 
form2上有个textbox控件,form3上也有个textbox控件.form4上有个button和textbox控件.
 
现在 如何实现form4上的button按了后,form2 或者form3上的textbox控件内容等于form4上的textbox内容.注意要判断当前form2和form3哪个窗体显示在界面中.(也就是说是哪个窗体打开的form4窗体)    注:: 不判断只要能实现互相通讯也行.高手在哪里.请帮忙解答.百分想赠.

解决方案 »

  1.   

    建议用 event
    在你的MainForm 里定义好所有需要的event .
    剩下的就是很简单的触发及订阅啦
      

  2.   

    form4设置一个事儿,谁创建它就是订阅这个事件,当form4的事件发生时(设form2创建的)form2即得到通知了,这时通过事件参数把form4的内容传递给form2,form2自己去修改自己的控件信息;
      

  3.   

    在1楼基础上补充
    可在form4 的构造函数 中增加 发送者信息的参数(是form2 还是form3)
      

  4.   

    form4里 添加个委托public delegate void SetWindowsText(string p_Text);
    public event SetWindowsText SetParent;private void button_Click(object sender, EventArgs e)
    {
      if (SetParent != null) SetParent(textbox1.Text);
    }在你使用form4的时候Form4 _Form4 =new Form4();
    _Form4.SetParent += new SetWindowsText(Form2_SetParent);void Form2_SetParent(string p_Text)
    {
         this.textBox1.Text=p_Text;       
    }
      

  5.   

    Form4里加一个TextBox,然后构造方法写为:
    private TextBox sourceBox;
    public Form4(TextBox source)
    {
        InitializeComponent();
        sourceBox = source;
    }
    按下按钮后执行:
    private void button1_Click(object sender, EventArgs e)
    {
        sourceBox.Text = textBox1.Text;//textBox1为呈现在Form4窗体上的TextBox
    }Form2和Form3的打开Form4的事件写为:
    private void button1_Click(object sender, EventArgs e)
    {
        new Form4(textBox1).Show();//textBox1为呈现在Form2或Form3窗体上的TextBox
    }
      

  6.   

    各位大哥都是高手啊
     等下我试试,
      thanks
      

  7.   

    大家好 
     经过实验,semify的方法方便实用,结帖了.谢谢大家的支持
      

  8.   

    把Form2和Form3里的TextBox的属性改为Public,
    在外部就可以随意访问了。