在C#中以另一种forms更改标签的文本?
我有一个名为LabelX1的标签。 这是在form2上。 在form1上,我有一个按钮。 我希望将按钮的文本传输到另一个表单的标签。 我试过了
form2 frm2 = new form2(); frm2.labelX1.Text = this.button1.text;
但它不起作用。 这样做有简单直接的方法吗?
您需要公开您的标签或其财产。
在表格2中:
public string LabelText { get { return this.labelX1.Text; } set { this.labelX1.Text = value; } }
然后你可以这样做:
form2 frm2 = new form2(); frm2.LabelText = this.button1.text;
您可以像这样修改Form2的构造函数:
public Form2(string labelText) { InitializeComponent(); this.labelX1.Text = labelText; }
然后在文本中创建Form2传递:
Form2 frm2 = new Form2(this.button1.text);
在form2中写这个
public void ChangeLabel(string s) { labelX1.Text = s; }
然后你在哪里创建表单2执行此操作
form2 frm2 = new form2(); frm2.ChangeLabel(this.button1.text);
或者你可以做到这一点>>
((Label)frm2.Controls["labelX1"]).Text = "test";
你可以将labelX1公开,它可以工作,但有一个更好的方法来做到这一点
https://www.codeproject.com/Articles/14122/Passing-Data-Between-Forms
这样做有简单直接的方法吗?
最简单的方法是使labelX1成为form2的公共成员。 您遇到的问题是因为Form1代码form2.labelX1不可见。 在form2设计器中,您可以转到labelX1的属性并将其设置为public / internal的可见性。
更好的方法是将labelX1.Text公开为可以在类外部的代码中设置的属性。
我将父窗口属性更改为以下代码:
this.MdiParent.Controls["label1"].Text = "test";
form2 frm2 = new form2(); ((Label)frm2.Controls["labelX1"]).Text=button1.Text; frm2.Show();
如果您需要从代码中的其他位置访问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; } }
你有例外吗? 您可以在form2上创建公共属性,使用setter在标签上设置文本,或者将labex1访问修饰符设置为public并直接设置它。 它应该工作。
上述就是C#学习教程:在C#中以另一种forms更改标签的文本?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1024464.html