紧急求救中求各位大侠帮忙~!!!!万分感谢~!!!!
我建了两个FORM(FORM 1和FORM2)。FORM 2是一个路径选择框,其中有一个TextBox和“确定”的Botton;而在FORM 1中我想通过调用FORM 2中TextBox(数据库路径)的内容来连接数据库,将内容显示在FORM 1中的DataGrid上。那个“确定”按钮的代码要怎么写,还有就是调用的代码应该怎么写??
我建了两个FORM(FORM 1和FORM2)。FORM 2是一个路径选择框,其中有一个TextBox和“确定”的Botton;而在FORM 1中我想通过调用FORM 2中TextBox(数据库路径)的内容来连接数据库,将内容显示在FORM 1中的DataGrid上。那个“确定”按钮的代码要怎么写,还有就是调用的代码应该怎么写??
Constr=Form2.Textbox1.text
{
public string Path
{
get
{
return this.TextBox1.Text;
}
}
}
在Form1显示出Form2里:
Form2 f2 = new Form2();
f2.ShowDialog();
MessageBox.Show(f2.Path);
网络上有几种方法,先总结如下:
调用窗体(父):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();
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传递过去了
在Form2 确定按钮事件中:
Hide();在Form1 中:
Form2.ShowDialog();
string path=Form2.TextBox1.Text;
Form2.Close();
Form2.Dispose();
.......
do whatever you want to do here...
将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; .....
}
}
}
第一段code的Form1应为Form2。
首先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.**=.....
public form2(string s)
{
sContent=s;
InitializeComponent();
}
在form1里面调用是这样的:
Form2 show2=new Form2(要传的参数);
show2.show();
这样
sContent的值与要得到的参数就一致了
传不了的话call:5574452我的qq