如何将标签中的文字传递给文本框 我有登录表单,将我输入的用户名传递给另一个表单的标签 用代码
Form2 frm2 = new Form2();
frm2.Show();
frm2.label2.Text = textBox1.Text;
this.Hide();
在我的第二种形式中,标签的修复标题是用户名
private void Form2_Load(object sender, EventArgs e)
{
textBox1.Text = label2.Text;
}
但是当我在label1
中传递textBox1
的值时,文本是用户名。
我怎么能通过呢?
答案 0 :(得分:4)
Form_Load事件在您设置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;
}
}
答案 1 :(得分:1)
您应该在“已显示”事件中执行此操作,在“加载”事件中,您的表单尚未初始化,因此您的标签内容尚未“标记”。
类似的东西:
private void Form1_Shown(object sender, EventArgs e)
{
textBox1.Text = label2.Text;
}
答案 2 :(得分:0)
除了传递用户名之外,还有其他问题需要解决。当您不再使用它时,您不应该在应用程序的整个持续时间内隐藏您的登录表单。考虑到它是您的主要形式,您也会遇到问题,优雅地结束您的应用程序,因为您的下一个表单将不是应用程序的主要表单。
相反,您应该确保第二个表单是应用程序的主要表单。转到program.cs文件,而不是只是启动登录表单,启动登录表单,然后在登录表单完成时为主表单创建一个单独的应用程序。
至于传递信息,只需在登录表单上创建一个可以获取文本框值的属性,然后在第二个表单上创建另一个属性,可以设置它的标签和文本框的值:
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;
}
}
}
Form1 login = new Form1();
Application.Run(login);
Form2 main = new Form2();
main.Username = login.Username;
Application.Run(main);
这也是为什么表单不应该在外部公开其UI组件的一个很好的例子。只有表格本身应该触及其内部控制。通过创建允许访问或设置信息的属性,您可以确保表单在其UI中正确反映这些更改,而其他类无需了解其内部详细信息。