19

我有一个名为 LabelX1 的标签。这是在form2上。在 form1 上,我有一个按钮。我希望将按钮的文本转移到另一个表单的标签。我努力了

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

但它不起作用。有没有一种简单、直接的方法来做到这一点?

4

13 回答 13

32

您需要公开您的标签或其属性。

在表格 2 中:

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

然后你可以这样做:

form2 frm2 = new form2();
frm2.LabelText = this.button1.text;
于 2012-05-22T14:26:01.430 回答
9

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

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

然后创建 Form2 传递文本:

Form2 frm2 = new Form2(this.button1.text);
于 2012-05-22T14:31:32.610 回答
6

或者你可以这样做>>

((Label)frm2.Controls["labelX1"]).Text = "test";
于 2012-05-22T14:36:34.583 回答
5

在form2里面写这个

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

然后在您创建表格 2 的地方执行此操作

form2 frm2 = new form2();
frm2.ChangeLabel(this.button1.text);
于 2012-05-22T14:35:12.520 回答
3

有没有一种简单、直接的方法来做到这一点?

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

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

于 2012-05-22T14:25:52.703 回答
1

您可以labelX1公开,它会起作用,但有更好的方法来做到这一点:

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

于 2012-05-22T14:29:21.253 回答
1

您唯一需要做的就是将另一种形式的标签设为公开

例如:表格1:

 public System.Windows.Forms.Label txtInfo;

然后在 Form2

Form1 frm =new Form1();
frm.txtInfo.text="....."//you have access because is public
于 2018-10-31T21:52:37.860 回答
1
form2 frm2 = new form2();
((Label)frm2.Controls["labelX1"]).Text=button1.Text;
frm2.Show();
于 2015-11-10T20:54:34.047 回答
0

Generally the controllers are private. That is why you unable to access it from another form. Above mentioned ways such as passing data through parameters etc are so correct. There is one another method, Go to your form Form2.Designer.cs

private System.Windows.Forms.Label labelX1;

Change 'private' into 'public'. Now the labelX1 is visible to outside.

于 2018-11-21T04:18:03.700 回答
0

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

 public form2 form2_pub;

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

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

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

至少对我有用。

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

  public bool show_scanning //turns on the scanning screen
    {
        set
        {
            scanning_pnl.Visible = true;
            notReady_pnl.Visible = false;
            timer1.Enabled = true;
        }
    }
于 2017-11-01T17:10:19.277 回答
0

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

this.MdiParent.Controls["label1"].Text = "test";
于 2015-10-21T13:28:54.567 回答
0

另一种方法是将标签或文本的修饰符属性更改为公共,现在它允许访问 form1 文本框的内容以在另一个表单上添加标签

所以代码是

private void button1_click(){
    Form2 obj1 =new Form2();
    Obj1.show();
    Obj1.label1.text="welcome"+textbox1.Text;
}
于 2021-06-17T05:41:16.487 回答
-1

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

于 2012-05-22T14:26:22.110 回答