c#winform如何把另一窗口中的textbox值调用过来

急急急

步骤1:在Form1上,布置一个TextBox(textBox1)和一个按钮(button1)

步骤2:在项目中添加一个窗体Form2。在Form2上布置一个Label(label1)。Form2的后台Form2.cs代码如下:

using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        // 新编写一个构造函数
        public Form2(string text) : this()
        {
            label1.Text = text;
        }
    }
}

步骤3:Form1的后台代码Form1.cs如下

using System;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 用我们自己编写的构造函数创建Form2,传入文本框text1.Text
            Form2 f2 = new Form2(textBox1.Text);
            f2.Show();
        }
    }
}

运行结果如下:

追问

我想在form2中点击button然后在form2中的textbox中出现form1中某个textbox的值,这样可以吗?

追答

可以。这样做:

1)修改Form1后台代码Form1.cs,增加一个属性

public partial class Form1 : Form
{
  ……   
 // 增加一个属性Message 
 public string Message
 { 
   get{ return text1.Text;}
 }   
        
 private void button1_Click(object sender,EventArgs e)
  {
    // 用造函数创建Form2
    Form2 f2 = new Form2(this);
     f2.Show();
 }
}

2)在Form2上增加一个Button(button1);后台代码Form2.cs

public partial class Form2 : Form
{
  ……        
 private Form1 form1;
 // 新编写一个构造函数,参数是Form1实例        
 public Form2(Form1 f1) : this()
 {
   form1 = f1;
 }
  
 public void button1_Click(object sendor,EventArgs e)
 {
   // 通过Form1的属性Message取得文本信息
   lable1.Text = f1.Message;
 }
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-05-12

软糖来回答把。

C#和VB.net不一样,窗体是类,而不是唯一的对象,所以必须指向该Form才能引用其中的对象。

首先在Form2定义一个全局静态字段 存储当前窗体

public Form2 curForm2;
private void Form2_Load(object sender, EventArgs e) {
    curForm2 = this;
}

然后在Form5中即可调用,注意,如果Form2从未启动,则会引发null错误。

curForm2.textbox

满意请采纳,谢谢。

追问

是这样引用吗?

还是出问题呀,怎么解决

追答

加个static Form3 curForm3

追问

能不能具体的操作代码写一下,我很菜,谢谢

我还是实现不了

显示要先判定是否为null什么的

现在我还有个问题是form3调试后有计算数据,但是在调试过程中从form4返回form3的时候,刚刚form3计算调试的数据都没有了,和没有调试之前的窗口一样,这个怎么解决

当我返回上一页的时候,又是空的了

追答

重新做了一个,实测可以。

点击Form1的按钮打开Form2,关闭后返回Form1,每次打开Form2文本框都递增一个A字母。

注意要给Form2添加一个FormClosing事件,里面把关闭改为隐藏,使用e.Cancel=true取消关闭事件。还要给Form2添加一个FormLoad事件,把控件textbox1赋值给变量tbox1。

追问

具体代码有没有,这些我觉得我写出来有问题

拜托啦

发生了null错误,但是我的form启动的呀

代码是if(curForm3.textBox37.Text!=null)
{textBox4.Text=curForm3.textBox37.Text;}
else
{}

本回答被网友采纳
第2个回答  2019-05-12
直接去另一个form取值,Form2.Textbox1.text就可以了。

c#winform如何把另一窗口中的textbox值调用过来
步骤1:在Form1上,布置一个TextBox(textBox1)和一个按钮(button1)步骤2:在项目中添加一个窗体Form2。在Form2上布置一个Label(label1)。Form2的后台Form2.cs代码如下:using System.Windows.Forms;namespace WindowsFormsApp1{ public partial class Form2 : Form { public Form2() ...

C# winform 在一个窗体中如何设置另一个窗体的TextBox的值
首先介绍最粗暴的方法,修改控件的访问修饰符。(不建议使用此法)public System.Windows.Forms.TextBox textBox1;在调用时就能直接访问 Form1 frm = new Form1();frm.textBox1.Text = "方法1";frm.Show();方法2是通过构造函数\/指定公开方法传入,然后为对应控件赋值。public Form2(string text){...

C#如何在单独的类里面去引用窗体中textbox的值
应该是调用吧,值是无法引用的,只有对象才可引用。你可先NEW出该类的对象,并将textbox的值赋给该对象的属性,而后即可通过该对象调用该属性,其属性的值便是textbox的值。public class txt { string txt_value="";} 在你想触发的事件中:txt t=new txt();t.txt_value=this.textbox1.text;\/...

C# winform 在一个窗体中如何设置另一个窗体的TextBox的值?
第一种情况,从A中点击SHOW出B~!那么在SHOW的时候在B的构造函数传入A,并且在B中声明一个全局的A,把B的构造函数传入A赋给这个全局变量,在B中设置string的时候,使用全局变量来设置A的TextBox控件值同,若找不到TextBox,那请将TextBox的可访问属性设为public。若B打开A也是同理。第二种情况是A...

winform中如何在一个窗口中调用另一个窗口的textBox里的Text属性值
我其他的方式不说了,就说一个比较实用的方式:不管哪个窗口调用哪个的textBox值,只需要将被调用的textBox值赋给一个静态类变量。然后需要值的窗口调用静态类变量即可,明白吗

C# 怎么在自定义的方法里调用窗体控件 或者 在另一个窗体里调用本窗体控...
通过挂载事件的方式跨Form调用。以下为在主窗体调用子窗体的TextBox2来设置主窗体Textbox1的代码:主窗体:private void button1_Click(object sender, EventArgs e){ Form2 frm = new Form2();frm.Closed += new EventHandler(this.CloseForm2);frm.ShowDialog();} private void CloseForm2(object...

C#如何获取窗体的TextBox的值
通过 TextBox 的属性进行获取;以下假设 TextBox 的 name 是 textBox winform 是 Text 属性, string str = textBox.Text; 就是窗体 TextBox 的值。wpf 是 Content 属性, string str = textBox.Content; 就是窗体 TextBox 的值。

winform中TextBox如何传值到另一个窗体的ComboBox控件上
comboBox1.Items.Add(b);把这段放到InitializeComponent();后面 因为InitializeComponent();是定义窗体上控件的方法 对控件的其他操作都要在这个后面。也就是说,程序执行完InitializeComponent();之后才有combobox这个控件。

c# winform A窗口的datagridview中click事件,如何把这行数据传到B窗口...
兄弟,你不是可以在本页面得到值吗?TextBox.Text=dataset.tables[0].rows[0].Tostring+...你可以新建一个帮助类,里面把这些要获取的字段定义成公共静态变量。然后你就可以把值传给这个载体类 如:Class1.字段1=dataset.tables[0].rows[0].Tostring();...你试试,希望能够帮助你 ...

C#如何获取窗体的TextBox的值
通过 TextBox 的属性进行获取;以下假设 TextBox 的 name 是 textBox winform 是 Text 属性, string str = textBox.Text; 就是窗体 TextBox 的值。wpf 是 Content 属性, string str = textBox.Content; 就是窗体 TextBox 的值。

相似回答