C#需要帮助将文本值传递给其他表单文本框

C#文本框发送文本值。 情况,我有2个表格。 Form1和Form2。 Form1有一个文本框,form2有一个文本框和一个按钮,我将在form2文本框上放置一个文本值,当我点击form2按钮时,将发送form2文本框的值并更改form1文本框值….需要帮助。 。

这就是我所做的……我只想总结一下

Form1没有代码只是textbox1

这是form2按钮中的代码

private void change_Click(object sender, EventArgs e) { form1 frm1 = new form(); string test = textbox2.text frm1.textbox.text = test; } 

香港专业教育学院尝试一些弹出消息框来检查值是否通过…到目前为止,该值确实通过但在UI中没有变化

假设您将Form2创建为Form1的子级(在Form1Form2 from = new Form2();执行类似Form2 from = new Form2();您可以从父级中访问子窗体的任何公共属性。因此,只需确保设置可访问性将TextBoxpublic ,并执行以下操作:

 var form = new Form2(); form.ShowDialog(); this.TextBox1.Text = form.TextBox1.Text; 

您可以将Form1中的文本框声明为公共,然后您可以通过执行form1.textBoxName.propertyName从form2访问它。

您可以使用以下事件:

定义一个接口:

 public interface ITextChange { event EventHandler SomeTextChanged; } 

然后让你用按钮实现这个界面并点击按钮点击事件,从文本框中传递值作为第一个参数:

 public partial class Form1 : Form, ITextChange { public event EventHandler SomeTextChanged = delegate { }; public Form1 () {} private void button1_Click(object sender, EventArgs e) { SomeTextChanged(textBox1.Text, null); } } 

将此表单的实例传递给您的第二个表单,如下所示:

 public partial class Form2 : Form { public Form2(ITextChange f) { InitializeComponent(); f.SomeTextChanged += new EventHandler(f_SomeTextChanged); } void f_SomeTextChanged(object sender, EventArgs e) { textBox1.Text = sender.ToString(); } } 

因此,在创建Form2时,需要传递Form1的实例:

 Form2 f = new Form2(form1); 

只要按下按钮,第二个表单上的文本框就会自动获取值。

PS:欲了解更多信息,请参阅活动教程

您可以通过将TextBox公开来依赖Form2中Form1的知识。 但在我看来,正确的方法是创建一个自定义事件处理程序,在Form2中订阅它并将文本作为eventarg传递。 代码改编自此MSDN文章

Form1中

 namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); Form2 frm2 = new Form2(); frm2.RaiseCustomEvent+=new CustomEventHandler(frm2_RaiseCustomEvent); frm2.Show(this); } void frm2_RaiseCustomEvent(object sender, CustomEventArgs a) { textBox1.Text = a.Message; } } } 

窗体2

 namespace WindowsFormsApplication1 { public delegate void CustomEventHandler(object sender, CustomEventArgs a); public partial class Form2 : Form { public event CustomEventHandler RaiseCustomEvent; public Form2() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { RaiseCustomEvent(this, new CustomEventArgs(textBox1.Text)); } } public class CustomEventArgs : EventArgs { public CustomEventArgs(string s) { msg = s; } private string msg; public string Message { get { return msg; } } } } 

你可以使用.Tag属性(在这里查看我的问题,这样做的简单方法是这样的:你说form2中的textBox.text会替换form1中的texBox.text吗?在form2中执行此操作

 try { private void change_Click(object sender, EventArgs e) { form2 frm2 = new form(); frm2.Tag = this.textbox2.text; frm2.ShowDialog(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } 

然后在加载form1时写这个

 string myText = (string)this.Tag; this.textbox1.text = myText; 

您的form1.textbox1未更新的原因是因为您初始化了form1的新实例

 form1 frm1 = new form(); 

因此,要更新屏幕上的form1,您需要将其实例注入form2。 例如,当您显示form2时,您设置。

form2.Form1 = currentForm1Instance;

希望这可以帮助。

我也有同样的疑问,所以我在互联网上搜索并找到了一种在C#之间传递变量值的好方法,这很简单。 它没什么,但是要在第一个Form中分配一个变量,你可以从任何forms访问该变量。 我创建了一个关于“如何将值传递给表单”的video教程

转到以下链接以查看video教程。

在Visual C#中将文本框文本传递给另一个表单