首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

两个FORM,怎么调用其中一个FORM 中TEXTBOX的内容?(紧急求救~)

2012-03-16 
两个FORM,如何调用其中一个FORM 中TEXTBOX的内容??(紧急求救~!!!!)紧急求救中。。。求各位大侠帮忙~!!!!万分

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

[解决办法]
只要把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);
[解决办法]
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();
[解决办法]
在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传递过去了
[解决办法]
常用5楼的构造函数方法,顶5楼
[解决办法]
在Form2中定义ConnectionString属性而不要直接将TextBox设为public(Be good coding practice).
将Form2的AcceptButton设为OK.

C# code
namespace test{  class Form1 : Form  {    string ConnectionString   {     get{return txtConnectionString.Text;        }   }}
[解决办法]
告诉你一个窗体传值得方法,以后都用它就行了:
首先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 string sContent;
public form2(string s)
{
sContent=s;
InitializeComponent();
}
在form1里面调用是这样的:
Form2 show2=new Form2(要传的参数);
show2.show();
这样
sContent的值与要得到的参数就一致了

热点排行