【问题标题】:C# WindowsForms - Send textbox from form1 to form2 on visual studioC# Windows 窗体 - 在 Visual Studio 中将文本框从 form1 发送到 form2
【发布时间】:2013-04-19 17:58:12
【问题描述】:

我在 Visual Studio 上有 2 个表格,

form1 have textbox1.text
form2, have textbox2.text and btnSave

obs:当我点击表单 1 上的另一个按钮时,表单 2 会打开:

Form new = new form2();
           nova.Show();

如何单击 btnSave 将 textbox2 内容从 form2 发送到 form1 (textbox1)? 在这个点击按钮事件中需要什么代码。

谢谢

【问题讨论】:

  • 向 form1 添加公共属性。
  • 将公共静态变量添加到Form1,您可以从任何地方访问它。
  • 您将表格 2 上的文本框数据发送到表格 1 的位置?另一个文本框?你都尝试了些什么?请发布您的代码。
  • 如果添加非静态公共属性或变量,则需要将 form1 的实例传递给 form2。
  • 如何添加公共静态变量?

标签: c# visual-studio textbox send


【解决方案1】:

在您的第二个表单上创建一个可以在保存表单时触发的事件:

public event Action Saved;

然后在该表单上创建一个允许访问文本框文本的属性:

public string SomeTextValue //TODO: rename to meaningful name
    { get{ return textbox2.Text;} }

然后您需要在保存表单时触发Saved 事件:

if(Saved != null)
    Saved();

然后当您第一次在Form1 中创建表单时,将事件处理程序附加到该事件:

Form2 child = new Form2();
child.Saved += () => textbox1.Text = child.SomeTextValue;
child.Show();

请注意,如果您在保存时也关闭了第二个表单,那么您不需要自定义事件,您可以使用 FormClosing 代替。

【讨论】:

  • 在form2中我添加了:公共动作事件已保存;我有 3 个错误,然后我点击保存并按下“为保存的生成类”,然后仍然出现 2 个错误:“类、结构或接口成员声明中的错误 1 ​​无效令牌'事件'”和“错误 2 无效令牌'; '在类、结构或接口成员声明中”,解决后我将继续按照您的步骤操作
  • @felipeSalomao 是的,它编译和运行对我来说都很好。 public class Form2 { public event Action Saved; } 完全按原样编译。
  • 现在一切正常,公共事件操作已保存;问题是在我没有创建 public class Form2 { public event Action Saved; },所以它在错误的地方,因为这个我有错误,第二步也有效:公共字符串 SomeTextValue(我也在 form2 上创建了这个),第三步无效,有大约 7 个错误,我应该把它放在哪里?在 form1 中单击打开 form2 的按钮吗?
  • @felipeSalomao 您要添加的唯一代码是中间的一行,它实际上将事件处理程序附加到Saved。您的程序somewhere 中应该已经有了第一行和第三行代码。在某处找到它,并在它们两者之间添加一条线。
【解决方案2】:

研究我能够让它工作,浪费了几个小时,但现在一切都很完美,这是对我有用的代码:

在表格 2 上:

public partial class form2 : Form
    {
        private string nome;
        public string passvalue
        {
            get { return nome; }
            set { nome = value; }
        }

form2,按钮保存:

private void btnSalvar_Click(object sender, EventArgs e)
        {
            passvalue = txtMetragemcubica.Text;
            this.Hide();
        }

在form1上(这个按钮打开form2):

private void btnMetragemcubica_Click(object sender, EventArgs e)
        {
            form2 n = new form2();
            n.ShowDialog();
            txtMetragem.Text = n.passvalue
        }

现在它以这种方式工作:在表单 1 上打开,然后单击按钮 btnMetragemcubica 并打开 form2,然后我在不同的文本框上插入值并在 txtMetragemcubica 上显示结果,当我单击保存按钮 (btnSalvar) 时,它关闭 form2 并将值发送到 txtMetragem 文本框中的 form1。

在这里工作完美,希望也能帮助其他人。 无论如何感谢所有帮助

【讨论】:

    【解决方案3】:

    请试试这个: Step1:为form2类创建一个构造函数,如下:

     public Form2(string strTextBox)
            {
                InitializeComponent();
                label1.Text = strTextBox;
            }
    

    Step2:在form1的按钮点击事件处理函数中实例化form2类,如下:

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

    【讨论】:

    • 这不行,form2如何将txt内容发送到form1?应该使用按钮,但是,它令人困惑..
    • 这里 form1 在我的示例中将文本发送到 form2。在form2中有一个构造函数。因此,当初始化 form2 时,将值作为 param.its 发送给构造函数对我有用。 textBox1 是 form1 中给定值的文本框。窗体 1 中的按钮 1。在 form2 label1 是一个标签,用于显示来自 form2 的值。它对我有用
    • 我一直在寻找这段代码。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多