在C#中以另一种形式更改标签的文本?

时间:2012-05-22 14:23:20

标签: c# winforms

我有一个名为LabelX1的标签。这是在form2上。在form1上,我有一个按钮。我希望将按钮的文本传输到另一个表单的标签。我试过了

form2 frm2 = new form2();
frm2.labelX1.Text = this.button1.text;

但它不起作用。这样做是否有一种简单直接的方式?

13 个答案:

答案 0 :(得分:20)

您需要公开您的标签或其财产。

表格2:

public string LabelText
{
    get
    {
        return this.labelX1.Text;
    }
    set
    {
        this.labelX1.Text = value;
    }
}

然后你可以这样做:

form2 frm2 = new form2();
frm2.LabelText = this.button1.text;

答案 1 :(得分:8)

您可以像这样修改Form2的构造函数:

public Form2(string labelText)
{
    InitializeComponent();
    this.labelX1.Text = labelText;
}

然后创建Form2传递文本:

Form2 frm2 = new Form2(this.button1.text);

答案 2 :(得分:5)

在form2中写这个

public void ChangeLabel(string s)
{
    labelX1.Text = s;
}

然后在哪里创建表单2执行此操作

form2 frm2 = new form2();
frm2.ChangeLabel(this.button1.text);

答案 3 :(得分:4)

或者您可以执行此操作>>

((Label)frm2.Controls["labelX1"]).Text = "test";

答案 4 :(得分:1)

  

这样做有简单直接的方法吗?

最简单的方法是使labelX1成为form2的公共成员。您遇到的问题是因为Form1代码form2.labelX1不可见。在form2设计器中,您可以转到labelX1的属性并将其可见性设置为public / internal。

更好的方法是将labelX1.Text公开为可以在类外部的代码中设置的属性。

答案 5 :(得分:1)

您可以将labelX1公开,并且它会有效,但有更好的方法可以做到这一点:

http://www.codeproject.com/Articles/14122/Passing-Data-Between-Forms

答案 6 :(得分:1)

您唯一需要做的就是将其他表格的标签设置为公开

例如:  表格1:

 public System.Windows.Forms.Label txtInfo;

然后在Form2中

Form1 frm =new Form1();
frm.txtInfo.text="....."//you have access because is public

答案 7 :(得分:0)

我将父窗口属性更改为以下代码:

this.MdiParent.Controls["label1"].Text = "test";

答案 8 :(得分:0)

form2 frm2 = new form2();
((Label)frm2.Controls["labelX1"]).Text=button1.Text;
frm2.Show();

答案 9 :(得分:0)

如果您需要从代码中的其他位置访问form2(例如按下按钮),您将无法看到您创建的表单的实例。为了解决这个问题,我创建了一个公共实例来保存对它的引用,如:

 public form2 form2_pub;

然后在创建它之后,将新的一个分配给您的公共实例:

form2 frm2 = new form2();
frm2.Show();
form2_pub = frm2

现在您可以在整个例程中引用form2_pub。

至少对我有用。

请记住,在您的setter中,您可以运行您想要的任何其他代码。 例如,我通过将show_scanning设置为true来使用以下内容在另一个表单上显示我想要的内容:

  public bool show_scanning //turns on the scanning screen
    {
        set
        {
            scanning_pnl.Visible = true;
            notReady_pnl.Visible = false;
            timer1.Enabled = true;
        }
    }

答案 10 :(得分:0)

通常,控制器是私有的。这就是为什么您无法从其他表单访问它的原因。上面提到的方式(例如,通过参数传递数据等)非常正确。还有另一种方法, 转到表单Form2.Designer.cs

private System.Windows.Forms.Label labelX1;

将“私人”更改为“公共”。 现在,标签X1在外部可见。

答案 11 :(得分:0)

另一种方法是 只需将 label 或 text 的修饰符属性更改为 public,现在它允许访问 form1 文本框的内容以在另一个表单上标记

所以代码是

private void button1_click(){
    Form2 obj1 =new Form2();
    Obj1.show();
    Obj1.label1.text="welcome"+textbox1.Text;
}

答案 12 :(得分:-1)

你有例外吗?您可以在form2上创建公共属性,使用setter在标签上设置文本,或者将labex1访问修饰符设置为public并直接设置它。它应该工作。