在另一个窗体上的文本框中追加文本
本文关键字:文本 追加 另一个 窗体 | 更新日期: 2023-09-27 18:32:34
我有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
上输入的文本。
尝试body.Text += " " + text;
很可能您正在更改Form1
隐藏副本中的文本框,而不是屏幕上显示的实例。
尝试将Form1
句柄传递给 Form2
的构造函数,并将其保存在类成员变量(也称为 field)中,以便在事件处理程序中使用。
在窗体之间传递值。
你可以试试这个。首先,你可以声明一个所有表单都可以访问的变量像这个,
string yourValue;
PS:声明你的类
从 form1 中,可以将值传递给该类。喜欢这个
YourClass.yourValue = textbox1.text;
一旦有一个值。 把它传递给你的第二个形式喜欢。
textbox2.text = YourClass.yourValue;
希望对你有帮助。:D
您有两种形式: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 中完成的。复出表格1完成:我假设当用户单击 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;
}
并且文本将在表单 1 中分配给 txt1
我认为您必须为文本框创建getter和setter,以便它作为表单类的一部分公开,并且可以将其作为表单对象访问第一福恩
public string sometext
{
get { return sometext.Text; }
set { sometext.Text = value; }
}
第二种形式
Form1 form= new Form1();
form.sometext = "some name";
这是我找到的另一个简短解决方案在表单 1 中启动表单 2
Form2 form2 = new Form2();
form2.Owner = (Form)this;
form2.Show();
和在形式 2 中
this.Owner.Controls.Find("TextBox1",true).First().Text="Hi!!!!"
将 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 中输入文本的地方