有2个窗体Form1和Form2,在Form1中有一个文本框和一个“设置”按钮,在Form2有一个文本框和一个“关闭”按钮,当我点击“设置”按钮时弹出Form2窗体,在Form2中的文本框中写入一个字符串,如何实现当我单击“关闭”按钮时关闭Form2的同时,在Form1的文本框中显示刚才填的内容?谢谢!另附图:

解决方案 »

  1.   

    Form2 form2 = new Form2();
    if(form2.Showdialog() == DialogResult.Ok)
    {
     this.TextBox1.Text = form2.InputText;
    }
    public class Form2:Form
    {
    public string InputText
    {
    get
    {
    return this.textBox1.Text;
    }set
    {
    this.textBox1.Text = value;
    }
    }
    }
      

  2.   

    前面一段代码是你在Form1中点击设置运行的。后面一段代码的意思是你在Form2中暴露一个属性,封装输入框的值。
      

  3.   

    1)在 Form1 中编写一个 public 方法 public void SetText(string text){}
    2)在 Form2 中包含一个Form 字段,并在初始化时获得Form1, 如下
    class Form2: Form
    {
       private Form form1;
       public Form2(Form form1)  // Form2 的构造函数获得 Form1 的引用
       {
          this.form1 = form1
       }
    }
    3) 在 Form1 的Button 中做
        Form2 frm = new Form2(Form2);
    4)在Form2的Button中做 form2.SetText(...)
       
      

  4.   

    天马行空您好!不知道你提供的代码有没有在您的机子上调试过,我试过了你的方法,并没有实现我要的功能,我觉得可能是form2.Showdialog() == DialogResult.Ok这一句代码有问题,我不理解当我点“关闭”按钮时,form2.Showdialog()返回的结果为什么是DialogResult.Ok.不过还是很感谢您!
      

  5.   

    hulihui您好!
    您的方法很新颖,但是由于本人水平有限,并不能完全领悟其中的奥妙!
    Form2 frm = new Form2(Form2);      这一句里面,Form2好像不能作为一个参数吧
    4)在Form2的Button中做 form2.SetText(...)      这个form2是不是我先在Form2中声明呢?因为它调用SetText方法,它应该是一个Form1的实例吧
    还请多多赐教!
      

  6.   

    你需要把关闭按钮的一个属性设置为返回DialogResult的返回值。
      

  7.   

    就是关闭按钮的DialogResult属性设置为OK
      

  8.   

    事实上是这样一个问题:
    有两个窗体,它们之间要进行数据交换。
    要实现的功能是:
    在一个窗体里面设置好了一些值,然后将设置好的值保存到一个xml文件中,然后关闭这个窗体,希望关闭这个窗体的同时能够马上实时更新另一个窗体里的值。只要各位前辈能够给小弟提供一个可行的思路小弟就感激不尽了!
      

  9.   

    Sorry。Form2 frm = new Form2(this),其中this是当前窗体