0

我有 2 个表格。在 上Form2,我有一个文本框和一个按钮。当我按下按钮时,我希望它将文本框中的文本附加到Form1. 这是我的代码:

Form2

private void button1_Click(object sender, EventArgs e)
{
    frm1.AppendTxt(textBox1.Text);
    this.Close();
}

Form1

public void AppendTxt(string text)
{
    this.body.AppendText(text);
    MessageBox.Show(body.Text);
}

由于某种原因,文本未显示在Form1. 但是,弹出的消息框显示了我输入的文本Form2

4

6 回答 6

0

尝试body.Text += " " + text;

于 2012-04-30T01:53:24.897 回答
0

很可能您正在更改隐藏副本中的文本框Form1,而不是屏幕上显示的实例。

尝试将Form1句柄传递给Form2的构造函数,并将其保存在类成员变量(也称为field)中以在事件处理程序中使用。

于 2012-04-30T01:59:22.977 回答
0

我认为您必须为您的文本框创建 getter 和 setter,以便它将作为表单类的一部分公开,并且您可以将其作为表单对象首先访问

   public string sometext
    {
        get { return sometext.Text; }
        set { sometext.Text = value; }
    }

第二种形式

Form1 form= new Form1();
 form.sometext = "some name";

这是我在 Form1 中找到的另一个简短解决方案,启动表单 2

Form2 form2 = new Form2();
form2.Owner = (Form)this;
form2.Show();

在 Form2 中

this.Owner.Controls.Find("TextBox1",true).First().Text="Hi!!!!"
于 2012-04-30T02:06:27.033 回答
0

在表单之间传递值。

你可以试试这个。首先,您可以声明一个所有表单都可以像这样访问的变量,

string yourValue;

PS:声明你的班级

从 form1,您可以将值传递给该类。像这样,

YourClass.yourValue = textbox1.text;

一旦有了价值。把它传递给你的第二种形式。

textbox2.text = YourClass.yourValue;

希望它可以帮助你。:D

于 2012-04-30T02:11:50.813 回答
0

您有两种形式:form1 和 form2。两种形式正在开放。在 form2 中,您有一个文本框(txt2)和一个按钮(btn2)。在 form1 中,您有一个文本框(txt1)。当用户在 txt2 上键入内容并单击 btn2 时,txt2 中的文本将附加到 txt1。这就是你想要的?

如果是:在 form2 中,您应该创建一个委托:

// Declare a delegate
public delegate void GetValue(string value);
// Declare event with delegate
public event GetValue btn2_Clicked;

然后,在 form2 中,您创建一个函数来处理该事件:函数名称与您刚刚声明的事件名称相同,并在其中添加前缀“On”。像这样:

public void Onbtn2_Clicked(string value)
{
    if (btn2_Clicked != null)
    {
        btn2_Clicked(value);
    }
}

之后,在 btn2 点击事件中,提升你刚刚创建的事件:

private void btn2_Click(object sender, EventArgs e)
{
    Onbtn2_Clicked(txt2.Text);
}

好的,这是在form2中完成的。复出 form1 完成:我假设当用户单击 form1 中的按钮(btn1)时打开了 form2,因此在 btn1 中单击事件:

private void btn1_Click(object sender, EventArgs e)
{
    // Create form2
    Form2 frm2 = new Form2();
    // Handle btn2 click
    frm2.btn2_Clicked += new Form2.GetValue(frm2_btn2_Clicked);
    // Show form2
    frm2.Show();

}

void frm2_btn2_Clicked(string value)
{
    // When btn2 is clicked, the text in txt2 will be assign to txt1
    txt1.Text = value;                
}

并且文本将分配给form1中的txt1

于 2012-04-30T02:29:07.890 回答
0

将 Form2.designer.cs 中的 txtBox 从私有更改为公共如何?

private System.Windows.Forms.TextBox textBox1;

public System.Windows.Forms.TextBox textBox1;

这样你就可以在 Form2 中像这样发送它:

Form1 frm1 = new Form1();

private void button1_Click (object sender, EventArgs e)
frm1.textBox1.AppendText(textBox2);

textBox2 是您在 Form2 中输入文本的地方

于 2017-08-18T13:33:21.940 回答