紧急求救中求各位大侠帮忙~!!!!万分感谢~!!!!
我建了两个FORM(FORM 1和FORM2)。FORM 2是一个路径选择框,其中有一个TextBox和“确定”的Botton;而在FORM 1中我想通过调用FORM 2中TextBox(数据库路径)的内容来连接数据库,将内容显示在FORM 1中的DataGrid上。那个“确定”按钮的代码要怎么写,还有就是调用的代码应该怎么写??

解决方案 »

  1.   

    其实是再Form1加载的时候
    Constr=Form2.Textbox1.text
      

  2.   

    只要把Form2的TextBox的限定改为Public就可以了,或者加一个Property.class Form2 : Form
    {
       public string Path
       {
           get
           {
              return this.TextBox1.Text;
           }     
       }
    }
    在Form1显示出Form2里:
    Form2 f2 = new Form2();
    f2.ShowDialog();
    MessageBox.Show(f2.Path);
      

  3.   

    公开FORM2的一个属性关闭时读取这个值赋值就行了
      

  4.   

    CON-如何在子窗体(被调用者)中实现对其父窗体(调用者)的刷新呢? 
    网络上有几种方法,先总结如下: 
    调用窗体(父):Form1,被调用窗体(子):Form2 
    方法1:   所有权法 
    //Form1: 
    //需要有一个公共的刷新方法 
    public   void   Refresh_Method() 

    //... 

    //在调用Form2时,要把Form2的所有者设为Form1 
    Form2   f2   =   new   Form2()   ; 
    f2.Owner   =   this; 
    f2.ShowDialog()   ; 
    //Form2: 
    //在需要对其调用者(父)刷新时 
    Form1   f1   ; 
    f1   =   (Form1)this.Owner; 
    f1.Refresh_Method()   ; 
    方法2:自身传递法 
    //Form1: 
    //需要有一个公共的刷新方法 
    public   void   Refresh_Method() 

    //... 

    Form2   f2   =   new   Form2()   ; 
    f2.ShowDialog(this)   ; 
    //Form2: 
    private   Form1   p_f1; 
    public   Form2(Form1   f1) 

    InitializeComponent(); 
    p_f1   =   f1; 

    //刷新时 
    p_f1.Refresh_Method()   ; 
    方法3:属性法 
    //Form1: 
    //需要有一个公共的刷新方法 
    public   void   Refresh_Method() 

    //... 

    //调用时 
    Form2   f2   =   new   Form2()   ; 
    f2.P_F1   =   this; 
    f2.Show()   ; //Form2: 
    private   Form1   p_f1; 
    public   Form1   P_F1 

    get{return   p_f1;} 
    set{p_f1   =   value;} 

    //刷新时 
    p_f1.Refresh_Method()   ; 
    方法4:委托法 
    //声明一个委托 
    public   delegate   void   DisplayUpdate(); 
    //Form1: 
    //需要有一个公共的刷新方法 
    public   void   Refresh_Method() 

    //... 

    //调用时 
    Form2   f2   =   new   Form2()   ; 
    f2.ShowUpdate   +=   new   DisplayUpdate(Refresh_Method)   ; 
    f2.Show()   ; 
    //Form2: 
    //声明事件 
    public   event   DisplayUpdate   ShowUpdate; 
    //刷新时,放在需要执行刷新的事件里 
    ShowUpdate();
      

  5.   

    在Form1的构造函数里加个参数
    public Form1(Form2 ff)
    {
       string conStr = ff.TextBox.Text;
    }Form2的按钮事件代码
    void Button_Click(object sender,EventArgs e)
    {
      Form1 f1 = new Form1(this);
      f1.ShowDialog();
    }这样就可以把Form2传递过去了
      

  6.   

    fangxinggood 的方法可用。不过,在调用 Form2.TextBox 之前,不要关闭Form2,而是让它隐藏,然后在Form1 中 关闭它。否则会引起 null 错误.
      

  7.   

    具体来说就是
    在Form2 确定按钮事件中:
       Hide();在Form1 中:
      Form2.ShowDialog();
      string path=Form2.TextBox1.Text;
      Form2.Close();
      Form2.Dispose();
      .......
        do whatever you want to do here...
      

  8.   

    在Form2中定义ConnectionString属性而不要直接将TextBox设为public(Be good coding practice).
    将Form2的AcceptButton设为OK.
    namespace test
    {
      class Form1 : Form
      {
        string ConnectionString
       {
         get{
    return txtConnectionString.Text;
         
       }
       
    }}在Form1中,加入如下code.
     string connectionString;
     void SelectConnectionString()
    {
      using(Form2 form2 = new Form2())
    {
       DialogResult rlt = form2.ShowDialog();
       if(rst == DialogResult.OK)
    {
        connectionString = form2.ConnectionString;    .....
    }
    }
    }
      

  9.   

    接楼上。
    第一段code的Form1应为Form2。
      

  10.   

    告诉你一个窗体传值得方法,以后都用它就行了:
    首先form2的改动:
    //在form2中定义一个form1的实例:
    Form1 f1=new Form1();
    //改写form2构造函数:
    public Form2(Form1 form1)
    {
    f1=form1;
    }
    //然后是form1的改动:
    form1调用form2时这样写:
    Form2 f2=new Form2(this);最后:如果你想在form2中调用form1中的东西,直接将form1中的那个东西设为public即可。
    即在form2中写:f1.**=.....
      

  11.   

    public string sContent;
    public form2(string s)
    {
        sContent=s;
        InitializeComponent();
    }
    在form1里面调用是这样的:
    Form2 show2=new Form2(要传的参数);
    show2.show();
    这样
    sContent的值与要得到的参数就一致了
      

  12.   

    我做的工程里面就是这么传值的
    传不了的话call:5574452我的qq
      

  13.   

    我就用的12楼的方法  2个form可以互相访问