C#中从1表单到另一个表单的文本

时间:2015-09-27 04:47:55

标签: c# .net winforms textbox

我正在使用。我有2个表单,每个表单中包含TextBoxButton。我的目标是通过点击按钮将TextBox form1上的内容发送到form2上的文本框。我还想关闭form1并仅显示form2form1上TextBox中输入的内容。

这是我到目前为止所拥有的。我的代码存在的问题是内容未在form2中显示。

this.Hide();

Form2 f2 = new Form2();
f2.ShowDialog();

f2.textBox1.Text = textBox1.Text;           

this.Close();
//close form1

4 个答案:

答案 0 :(得分:0)

鉴于您提供的代码来自您的按钮点击事件。它可以简单地修改如下,以获得你需要的东西。

Form2 f2 = new Form2();
f2.textBox1.Text = textBox1.Text;  
f2.Show();

this.Close();

但是,如果Form1是主窗体,即它是从Program.cs加载的。您的申请将在this.Close()

之后退出

我还建议你不要制作Form2的textBox1。保留属性private并创建一个函数来修改其值,例如:在Form2中创建此函数

public void SetTextBox1Text(string text)
{
    textBox1.Text = text;
}

您的Form1按钮点击事件:

Form2 f2 = new Form2();
f2.SetTextBox1Text(textBox1.Text);  
f2.Show();

this.Close();

答案 1 :(得分:0)

首先在Form2.cs中添加一个属性,将私有textBox1作为一种好习惯。

public partial class Form2 : Form
{
    //this is a property
    public string TextBox1
    {
        get { return textBox1.Text; }
        set { textBox1.Text = value; }
    }
    public Form2()
    {
        InitializeComponent();
    }
}

接下来,在Form1.cs中,在显示对话框之前,先将textBox1的值指定给Form2。

    private void button1_Click(object sender, EventArgs e)
    {
        this.Hide();
        Form2 f2 = new Form2();
        //assign the value first before showing the dialog
        f2.TextBox1 = textBox1.Text;
        f2.ShowDialog();

        this.Close();
    }

答案 2 :(得分:0)

ShowDialog()会显示Form2的模态窗口,这意味着您无法转到Form1

的父表单
f2.textBox1.Text = textBox1.Text;           
this.Close();

以上两行是在f2.ShowDialog();之后写的,只有当Form2关闭时才会执行。因此,您未在TextBox中的Form2中收到任何文字。

来到您将Form1 TextBox值发送到Form2的部分,最简单最简单的方法是通过Form1 TextBox value作为Form2的构造函数的字符串。

以下是代码

Form1按钮单击:

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

表单2构造函数:

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

希望这有帮助。

答案 3 :(得分:-1)

问题在于:

f2.ShowDialog();

方法ShowDialog()是阻止调用。在f2关闭之前,您之后的代码将无法执行。尝试将其替换为Show()

编辑:正如@Abhishek所指出的那样,使用Show()并不能解决问题,因为你想在第二个表格完成后关闭第一个表格。问题仍然是相同的,ShowDialog()将在那里等待DialogResult,因此不会执行下一个语句。在显示表单之前,请考虑设置文本框内容。