有两个窗体Form1、Form2,且每个窗体上有文本框和发送按钮一个,在Form1窗体上的文本框写入字符后,点击发送按钮,信息立即传到Form2的文本框中,同理在Form2中输入或修改字符后,点击发送按钮可传到Form1文本框架中,可多次传送,最好使用delegate方案,请问各位仁兄弟姐妹解答,笔者在此表示感激!

解决方案 »

  1.   

    public partial class Form1 : Form  
      {  
      private void button1_Click(object sender, EventArgs e)  
      {  
      Form2 frm2 = new Form2();  
      frm2.Show(this);  
      }  
      }    public partial class Form2 : Form  
      {  
      private void button1_Click(object sender, EventArgs e)  
      {  
      Form1 frm1 = (Form1)this.Owner;  
      ((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text;  
      this.Close();  
      }  
      }  
    delegate
    http://www.codeproject.com/KB/cs/passdatadelegate.aspx
      

  2.   

    1. 创建一个 BaseForm(两个控件:TextBox和Button)
    public partial class BaseForm : Form
    {
        public BaseForm()
        {
            InitializeComponent();
        }
        
        // 定义一个发送消息的事件
        public event Action<string> SendMessage;    // 定义一个Property,接受要监听的另一个窗体
        public BaseForm ListenedForm { get; set; }    private void button1_Click(object sender, EventArgs e)
        {
            if (SendMessage != null)
                SendMessage(this.textBox1.Text);
        }    private void BaseForm_Load(object sender, EventArgs e)
        {
            if (DesignMode) return;
            // 如果监听窗体存在,注册监听处理
            if (ListenedForm != null)
                ListenedForm.SendMessage += x => this.textBox1.Text = x;
        }
    }2.创建两个Form1,Form2 继承 BaseForm。
    public partial class Form1 : BaseForm
    public partial class Form2 : BaseForm3.创建一个启动Form(MainForm)
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }    private void button1_Click(object sender, EventArgs e)
        {
            Form1 f1 = new Form1();
            Form2 f2 = new Form2();        f1.ListenedForm = f2;
            f2.ListenedForm = f1;        f1.Show();
            f2.Show();
        }
    }
      

  3.   

    我觉得楼主可以试用两种方案:
    1、采用消息机制,即试用Win32下的SendMessage()方法用来在两个窗体之间传递值。
    2、采用事件机制,在Form1和Form2中定义事件,分别在Form1和Form2中响应响应事件。