C#把一个窗体中文本框的值传到另一个窗体标签中

作者&投稿:实放 (若有异议请与网页底部的电邮联系)
C# winform 在一个窗体中如何设置另一个窗体的TextBox的值?~

A 和 B窗体,首先不知道A 和B之间是谁打开谁还是同级,谁也不打开谁。
第一种情况,从A中点击SHOW出B~!那么在SHOW的时候在B的构造函数传入A,并且在B中声明一个全局的A,把B的构造函数传入A赋给这个全局变量,在B中设置string的时候,使用全局变量来设置A的TextBox控件值同,若找不到TextBox,那请将TextBox的可访问属性设为public。
若B打开A也是同理。
第二种情况是A和B都是由父窗体打开的。这种情况,也是在父窗体中声名两个全局的A和B!然后打开A和B的时候,可以把A传给B,把B传给A,然后在A和B里一样的要有一个全局的B和A!
这样就可赋值了。记得判断是否为空。·
庵顶,2000年起由庵上改名,是由以前庵顶山一庵得名,人口未知,主要由高,王,李三姓组成,农民以种葱,姜为主,依山傍水,北由汶河,交通便利,西靠青云湖路,北由滨河路,南有下小路,东靠安丘东外环,物产丰富,人们安居乐业

很简单的,就是通过参数传递的方法!

//这是b.java文件
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class b extends JFrame implements ActionListener{
JButton button1=new JButton("显示窗体a");
public b()
{
super("我是窗体b");
this.setBounds(250,80,350,400);
this.setVisible(true);
this.setResizable(false);
button1.setBounds(35,140,70,20);
button1.addActionListener(this);
this.add(button1);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==button1)
{
String title ="我是窗体b传过来的值";
new a(title);
}
}
public static void main(String argv[])
{
new b();
}
}
//这是a.java文件
/**
* Created with IntelliJ IDEA.
* User: Administrator
* Date: 12-6-19
* Time: 上午7:31
* To change this template use File | Settings | File Templates.
*/
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class a extends JFrame{
JLabel label1 = new JLabel("学号:",JLabel.CENTER);
public a(String parameter)
{
super("我是窗体a");
String str=parameter;
this.setBounds(250,80,350,400);
this.setVisible(true);
this.setResizable(false);
this.add(label1);
label1.setText(parameter);
}
}

一下是本人的一点总结:说的不对还请指教。。。。呵呵(可能有点多慢慢看有帮助的!)

下面以FormMain 和FormChild为例­

方法一:­

使用owner属性­

在FormMain 中­

public partial class FormMain : Form­



public FormMain()­



InitializeComponent();­

} private void button1_Click(object sender, EventArgs e)­



FormChild form2 = new FormChild();­

form2.Owner = this;­

form2.ShowDialog();­

form2.Dispose();­



}在FormChild中­

public partial class FormChild: Form­



FormMain form1;­

public FormChild()­



InitializeComponent();­

}

private void Form2_Load(object sender, EventArgs e)­



form1 = (FormMain)this.Owner;­

string s = form1.button1.Text; //注意这里的代码最好写在Load事件中,否则 FormChild form2 = new FormChild();­

执行时将执行上面的两条语句将使owner属性为空null,此外还要将button1的private改一下­





方法二

使用构造方法

public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
FormChild form2 = new FormChild(this);
form2.ShowDialog();
form2.Dispose();
}
}

public partial class FormChild : Form
{
FormMain form1;
public FormChild(FormMain form1)
{
InitializeComponent();
this.form1 = form1;
}

private void Form2_Load(object sender, EventArgs e)
{
string s = form1.button1.Text;
}
}

注意:为了安全起见可以不改变button1的访问性而用属性

public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}

public Button Button1
{
get
{
return button1;
}
}
private void button1_Click(object sender, EventArgs e)
{
FormChild form2 = new FormChild(this);
form2.ShowDialog();
form2.Dispose();
}
}

public partial class FormChild : Form
{
FormMain form1;
public FormChild(FormMain form1)
{
InitializeComponent();
this.form1 = form1;
}

private void Form2_Load(object sender, EventArgs e)
{
string s = form1.Button1.Text;
}
}

方法三

FormMain 中直接利用show()方法和showDialog()方法将owner传递过去

public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
FormChild form2 = new FormChild();
form2.ShowDialog(this);
form2.Dispose();
}
}

在FormChild 中

public partial class FormChild : Form
{
public FormChild()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{
FormMain form1;
form1 = (FormMain)this.Owner;
string s = form1.button1.Text;//再次提醒这里form_load中的代码不能在初始化时候写
}
}

方法四

public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}

public Button Button1
{
get
{
return button1;
}
}
private void button1_Click(object sender, EventArgs e)
{
FormChild form2 = new FormChild();
form2.ShowDialog();
form2.Dispose();
}
}

public partial class FormChild : Form
{
public FormChild()
{
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{

FormMain form1=new FormMain ();
string s = form1.Button1.Text;
}
}

//方法四有个缺点那就是如果你给前面的属性赋值当子窗口关闭的时候赋的值就没有了

除非是给静态的字段赋值(建议不要用这种方法)

其他:

为避免方法一前面说的子窗口中的有些代码必须写在load中可以这样处理

在FormMain 中­

public partial class FormMain : Form­



public FormMain()­



InitializeComponent();­

} private void button1_Click(object sender, EventArgs e)­



FormChild form2 = new FormChild();­

form2.Owner = this;­

form2.ShowDialog();­

form2.Dispose();­



}在FormChild中­

public partial class FormChild: Form­



FormMain form1;­

public FormChild()­



InitializeComponent();­

}

public FormChild(FormMain form1)­//构造方法的重载



this.form1=form1;

InitializeComponent();­

}

private void Form2_Load(object sender, EventArgs e)­



form1 = (FormMain)this.Owner;­

string s = form1.button1.Text; //注意这里的代码最好写在Load事件中,否则 FormChild form2 = new FormChild();­

执行时将执行上面的两条语句将使owner属性为空null,此外还要将button1的private改一下­





一下是本人的一点总结:说的不对还请指教。。。。呵呵(可能有点多慢慢看有帮助的!)
下面以FormMain
和FormChild为例­
方法一:­
使用owner属性­
在FormMain
中­
public
partial
class
FormMain
:
Form­

public
FormMain()­

InitializeComponent();­
}
private
void
button1_Click(object
sender,
EventArgs
e)­

FormChild
form2
=
new
FormChild();­
form2.Owner
=
this;­
form2.ShowDialog();­
form2.Dispose();­

}在FormChild中­
public
partial
class
FormChild:
Form­

FormMain
form1;­
public
FormChild()­

InitializeComponent();­
}
private
void
Form2_Load(object
sender,
EventArgs
e)­

form1
=
(FormMain)this.Owner;­
string
s
=
form1.button1.Text;
//注意这里的代码最好写在Load事件中,否则
FormChild
form2
=
new
FormChild();­
执行时将执行上面的两条语句将使owner属性为空null,此外还要将button1的private改一下­


方法二
使用构造方法
public
partial
class
FormMain
:
Form
{
public
FormMain()
{
InitializeComponent();
}
private
void
button1_Click(object
sender,
EventArgs
e)
{
FormChild
form2
=
new
FormChild(this);
form2.ShowDialog();
form2.Dispose();
}
}
public
partial
class
FormChild
:
Form
{
FormMain
form1;
public
FormChild(FormMain
form1)
{
InitializeComponent();
this.form1
=
form1;
}
private
void
Form2_Load(object
sender,
EventArgs
e)
{
string
s
=
form1.button1.Text;
}
}
注意:为了安全起见可以不改变button1的访问性而用属性
public
partial
class
FormMain
:
Form
{
public
FormMain()
{
InitializeComponent();
}
public
Button
Button1
{
get
{
return
button1;
}
}
private
void
button1_Click(object
sender,
EventArgs
e)
{
FormChild
form2
=
new
FormChild(this);
form2.ShowDialog();
form2.Dispose();
}
}
public
partial
class
FormChild
:
Form
{
FormMain
form1;
public
FormChild(FormMain
form1)
{
InitializeComponent();
this.form1
=
form1;
}
private
void
Form2_Load(object
sender,
EventArgs
e)
{
string
s
=
form1.Button1.Text;
}
}
方法三
FormMain
中直接利用show()方法和showDialog()方法将owner传递过去
public
partial
class
FormMain
:
Form
{
public
FormMain()
{
InitializeComponent();
}
private
void
button1_Click(object
sender,
EventArgs
e)
{
FormChild
form2
=
new
FormChild();
form2.ShowDialog(this);
form2.Dispose();
}
}
在FormChild

public
partial
class
FormChild
:
Form
{
public
FormChild()
{
InitializeComponent();
}
private
void
Form2_Load(object
sender,
EventArgs
e)
{
FormMain
form1;
form1
=
(FormMain)this.Owner;
string
s
=
form1.button1.Text;//再次提醒这里form_load中的代码不能在初始化时候写
}
}
方法四
public
partial
class
FormMain
:
Form
{
public
FormMain()
{
InitializeComponent();
}
public
Button
Button1
{
get
{
return
button1;
}
}
private
void
button1_Click(object
sender,
EventArgs
e)
{
FormChild
form2
=
new
FormChild();
form2.ShowDialog();
form2.Dispose();
}
}
public
partial
class
FormChild
:
Form
{
public
FormChild()
{
InitializeComponent();
}
private
void
Form2_Load(object
sender,
EventArgs
e)
{
FormMain
form1=new
FormMain
();
string
s
=
form1.Button1.Text;
}
}
//方法四有个缺点那就是如果你给前面的属性赋值当子窗口关闭的时候赋的值就没有了
除非是给静态的字段赋值(建议不要用这种方法)
其他:
为避免方法一前面说的子窗口中的有些代码必须写在load中可以这样处理
在FormMain
中­
public
partial
class
FormMain
:
Form­

public
FormMain()­

InitializeComponent();­
}
private
void
button1_Click(object
sender,
EventArgs
e)­

FormChild
form2
=
new
FormChild();­
form2.Owner
=
this;­
form2.ShowDialog();­
form2.Dispose();­

}在FormChild中­
public
partial
class
FormChild:
Form­

FormMain
form1;­
public
FormChild()­

InitializeComponent();­
}
public
FormChild(FormMain
form1)­//构造方法的重载

this.form1=form1;
InitializeComponent();­
}
private
void
Form2_Load(object
sender,
EventArgs
e)­

form1
=
(FormMain)this.Owner;­
string
s
=
form1.button1.Text;
//注意这里的代码最好写在Load事件中,否则
FormChild
form2
=
new
FormChild();­
执行时将执行上面的两条语句将使owner属性为空null,此外还要将button1的private改一下­



写一个类,里面一个变量存textbox中的内容,在另一个窗体中调用这个类,得到这个变量,给label赋值。!

label1.text=textbox1.text
写在某一事件里

用session传值!


和顺县18385815779: C#中如何提取窗体文本框中的数值,并将其赋给另一个窗口的成员变量?
皮红健胃: 您可以在第一个Form中写一个方法,用于传递变量,在另一个Form中new一下第一个Form,使用其中的那个方法就会获得变量值了.回答完毕,祝您好运.

和顺县18385815779: C#中两个窗口互传值 -
皮红健胃: 方法一: 首先,在原窗体中代码: public partial class Form2 : Form{public Form2(){InitializeComponent();} private void button1_Click(object sender, EventArgs e){Form3 frm = new Form3(textBox1);frm.Show();}}接下来传值到第...

和顺县18385815779: C#窗体间传值的几种方法总结 -
皮红健胃: DialogResult = DialogResult.OK.Name;(2) 利用窗体的构造函数,修改第二个窗体的构造函数.Label1.text=TextBox1.Text,关闭该窗体,是简单吧.(二)把第二个窗体的值传到第一个窗体,常见的情况就是单击第二个窗体的确定按钮时,把第二...

和顺县18385815779: c# 怎么用get,set传递数值 第一个窗口输入框中的值传递到第二个窗口
皮红健胃: 先在窗口2上放一个textblock,然后在代码里写public string text { get { return textBlock.Text; } set { textBlock.Text = value; } } 然后在窗口1放一个textbox,和一个button并添加点击事件,然后在点击事件里写Window1 win = new Window1(); //这是窗口2的实例化win.text = textBox.Text;win.Show(); 这样窗口2上就能显示窗口1输入的值了

和顺县18385815779: c# 两窗体之间 用textbox文本传值 -
皮红健胃: 这个也简单啊,先在Form1里写个public的方法传值 public string getForm1() { return this.textbox1.text; } 下面这段写 Form2的按纽里 Form1 frm1 = new Form1(); this.textbox1 = frm1.getForm1(); 同样 Form2里写个public的方法传值 public string getForm2() { return this.textbox1.text; } 下面这段写 Form1的按纽里 Form2 frm2 = new Form2(); this.textbox1 = frm2.getForm2(); 就ok了

和顺县18385815779: c# 如何将一个窗口的值传给另一个窗口
皮红健胃: 你可以在第二个窗体里写个方法 int x; public void cz(int x) {this.x=x; this,show(); } 然后在第一个窗体里写 form2 frm -new form2(); frm.cz(); 就可以了!

和顺县18385815779: c# windows窗体中的参数从一个窗体传到另一个窗体 -
皮红健胃: 你可以重载一个要获值的窗体的构造函数,额外加一个参数,此参数接受你要传的值.同时把原来窗体的构造函数里系统自动生成的代码拷到新的函数里面,然后自己的代码写在这些代码下面.传值时的情况就是:实例化获值窗体时改用你重载的那个构造方法,然后给构造方法传值...当然还有另一种用委托的方法也可以实现窗体传值.

和顺县18385815779: C#文本框运算后的值给另一个文本框怎么弄? -
皮红健胃: Double d1,d2,d3; d1 = Convert.ToDouble(textBox5.Text); d2 = Convert.ToDouble(textBox8.Text); d3 = d1*d2; textBox9.Text = Convert.ToString(d3); 此外保证textBox5.Text和textBox8.Text的值有效

和顺县18385815779: c#中,窗体间传值怎么做 -
皮红健胃: 一般这种,需要修改窗体2的构造函数,把这两个值,放在窗体2的构造函数中.然后窗体1弹出窗体2的时候,把值传递过去.string data1="1"; string data2="2"; Form2 form2=new Form2(data1,data2); form2.Show();

和顺县18385815779: c# 如何把值从一个窗体传到另一个窗体 -
皮红健胃: 第一种方法: 在form2中添加MouseDown事件:(需要事先把form1中的tbBox的Modifiers设置为Public) private void FormMain_MouseDown(object sender, MouseEventArgs e) {foreach(Form f in Application.OpenForms) { if(f.Name=="Form1...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网