C# 通过单击按钮将值从一个窗体传递到另一个窗体

C# 通过单击按钮将值从一个窗体传递到另一个窗体,c#,winforms,parameter-passing,C#,Winforms,Parameter Passing,这是我的两张表格。 这些是表格1的代码--> 这些是表格2的代码--> 看这幅画。你可以理解它的设计 这就是我想做的。首先,我使用Form1中的按钮打开Form2。然后我输入一个文本并单击按钮(“在Form1文本框中显示”)。单击时,该值应在Form1的3个文本框中显示。我使用消息框查看值是否传递。值从Form2传递到Form1。但这些值不会显示在这3个文本框中,但传递的值会显示在消息框中。通过查看代码,可以理解3个文本框的原因。那么错误是什么呢?在表单2中放置一个静态字符串 public s

这是我的两张表格。

这些是表格1的代码-->

这些是表格2的代码-->

看这幅画。你可以理解它的设计


这就是我想做的。首先,我使用Form1中的按钮打开Form2。然后我输入一个文本并单击按钮(“在Form1文本框中显示”)。单击时,该值应在Form1的3个文本框中显示。我使用消息框查看值是否传递。值从Form2传递到Form1。但这些值不会显示在这3个文本框中,但传递的值会显示在消息框中。通过查看代码,可以理解3个文本框的原因。那么错误是什么呢?

表单2中放置一个静态字符串

public static string s = string.Empty;
并且,在您的在Form1文本框中显示按钮单击事件中,从字符串
s
中的文本框中获取值:

s = textBox1.Text;
Form1 f1 = new Form1();
f1.Show();
foreach (Control text in Controls)
{
    if (text is TextBox)
    {
        ((TextBox)text).Text = Form2.s;
    }
}
一旦
Form1
再次显示,然后在
Form1\u Load
事件中,只需将
Form2
的文本值传递给
Form1
的文本框,其值由变量
s
获取:

s = textBox1.Text;
Form1 f1 = new Form1();
f1.Show();
foreach (Control text in Controls)
{
    if (text is TextBox)
    {
        ((TextBox)text).Text = Form2.s;
    }
}

和格式2中的代码

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

textbox1
button1
的修饰符属性设置为
public

我只需将其传递给构造函数即可。 因此,表2的代码为:

public partial class Form2 : Form
{
    string _input;

    public Form2()
    {
        InitializeComponent();
    }

    public Form2(string input)
    {
        _input = input;
        InitializeComponent();

        this.label1.Text = _input;
    }
}
表格1中的调用将是:

private void button1_Click(object sender, EventArgs e)
{
    fm2 = new Form2(this.textBox1.Text.ToString());
    fm2.Show();
}

实际上我有一个目标要通过。所以我做了这个

在表格1中-->

在表格2中-->


您应该在Form1中创建在关闭Form2时要保留的变量有几种方法。。但是只需调用
newform2().Show()不是我会采取的方法。。我将创建一个var frm2=new Form2(),然后在关闭Form2时传递和/或创建变量以保存值,然后在显示Form2时,我将调用ShowDialog()`方法,以便在关闭时返回调用方法。。然后我会调用frm2.Dispose()`希望这有意义rry我是VS或C的新手#如果您提供代码会更好。所以我能理解它!谢谢大家!@方法你最好在谷歌上搜索一下怎么做。。这不是一个
代码工厂站点,这也没有那么困难。。所以不,我不会为你做这项工作。。对不起,这不是这个网站的工作方式。我给你解释了怎么做。@MethodMan是对的。通过谷歌搜索,你会发现很多例子。例如(10秒后找到,第一行),我在谷歌上搜索。但是没有得到正确的答案。这就是我来这里的原因:/BTW tnx用于链接@DDD SoftCan you
foreach(控件中的文本框文本)
?@khargoosh您不能,因为您需要将基类定义为控件,而Textbox不是所有控件的基类:)即使我将button修饰符属性设置为public,我仍然会收到此错误
“Form”不包含“searchButton”的定义,并且没有可访问的扩展方法“searchButton”接受第一个可以找到“Form”类型的参数(是否缺少using指令或程序集引用?
为什么?
private void button1_Click(object sender, EventArgs e)
{
    fm2 = new Form2(this.textBox1.Text.ToString());
    fm2.Show();
}
private void btnOpenF2_Click(object sender, EventArgs e)
        {
            new Form2(this).Show();
        }
public partial class Form2 : Form
    {
        Form1 a;
        public Form2(Form1 b)
        {
            a = b;
            InitializeComponent();

        }
        private void button1_Click(object sender, EventArgs e)
        {
            string g;
            g = textBox1.Text;


            a.set(g);
            this.Close();
        }
    }