如何将标签中的文本传递给文本框

时间:2014-01-03 14:41:08

标签: c#

如何将标签中的文字传递给文本框 我有登录表单,将我输入的用户名传递给另一个表单的标签 用代码

    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的值时,文本是用户名。 我怎么能通过呢?

enter image description here

3 个答案:

答案 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)

您应该在“已显示”事件中执行此操作,在“加载”事件中,您的表单尚未初始化,因此您的标签内容尚未“标记”。

阅读此Form.Shown Event

类似的东西:

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中正确反映这些更改,而其他类无需了解其内部详细信息。