C# 如何将标签中的文本传递到文本框
如何将标签中的文本传递到文本框。C# 如何将标签中的文本传递到文本框,c#,C#,如何将标签中的文本传递到文本框。 我有一个登录表单,它将我输入的用户名传递给另一个表单的标签 用密码 Form2 frm2 = new Form2(); frm2.Show(); frm2.label2.Text = textBox1.Text; this.Hide(); 在我的第二种形式中,标签的固定标题是Username private void Form2_Load(object sender, EventArgs e) { te
我有一个登录表单,它将我输入的用户名传递给另一个表单的标签 用密码
Form2 frm2 = new Form2();
frm2.Show();
frm2.label2.Text = textBox1.Text;
this.Hide();
在我的第二种形式中,标签的固定标题是Username
private void Form2_Load(object sender, EventArgs e)
{
textBox1.Text = label2.Text;
}
但是当我在textBox1
中传递label1
的值时,文本是Username。
我怎样才能通过呢
您应该在“显示”事件中执行此操作,在“加载”事件中,您的表单尚未初始化,因此您的标签内容尚未“标记”
读这个
大概是这样的:
private void Form1_Shown(object sender, EventArgs e)
{
textBox1.Text = label2.Text;
}
表单加载事件发生在设置
frm2.label2.Text=textBox1.Text之前代码>
使用Form2的新构造函数传递文本框
Form2 frm2 = new Form2(textBox1.Text);
frm2.Show();
this.Hide();
在Form2.cs中
public partial class Form2 : Form
{
public Form2(string username)
{
InitializeComponent();
label2.Text = username;
textBox1.Text = label2.Text;
}
}
除了传递用户名之外,您还应该解决另一个问题。当您不再使用登录表单时,您不应该在应用程序的整个过程中隐藏它。考虑到它是您的主窗体,您在优雅地结束应用程序时也会遇到问题,因为您的下一个窗体将不是应用程序的主窗体
相反,您应该确保第二个表单是应用程序的主表单。转到program.cs文件,在登录表单完成后,启动登录表单,然后为主表单创建单独的应用程序,而不仅仅是启动登录表单
至于传递信息,只需在登录表单上创建一个可以获取textbox值的属性,并在第二个表单上创建另一个可以设置其标签和textbox值的属性:
public class Form1 : Form
{
private TextBox textbox1;
public string Username { get { return textbox1.Text; } }
}
public class Form2 : Form
{
private Label label1;
private TextBox textbox1;
public string Username
{
get { return label1.Text; }
set
{
label1.Text = value;
textbox1.Text = value;
}
}
}
这也是为什么表单不应该在外部公开其UI组件的一个极好的例子。只有表单本身才应该触及其内部控件。通过创建允许访问或设置信息的属性,您可以确保表单在其UI中正确反映这些更改,而无需其他类了解其内部详细信息。在visual studio的“属性”窗口中,有一个用于显示事件的小闪电图标。导航到TextChanged事件(或另一个,取决于您的偏好),双击该字段以生成一个代码,该代码将在触发事件时执行。在这个代码段中,设置标签的文本,就像您为表单的加载事件所做的那样。注意。应删除此加载事件。新的“Form2(textBox1.Text);”中有一个错误,例如“Windows.FormsAliation3.Form2”不包含接受1个参数的构造函数。我的错,从构造函数行中删除了空值还有一个“在'WindowsFormsApplication3.Form2'类型的声明中缺少部分修饰符;这种类型的另一个部分声明存在“是的,可能您有Form2.Designer.cs文件,该文件用部分修饰符声明了类。只需添加它就可以解决问题
Form1 login = new Form1();
Application.Run(login);
Form2 main = new Form2();
main.Username = login.Username;
Application.Run(main);