我有一个名为LabelX1的标签,它位于form2上。在form1上,我有一个按钮。我想将按钮的文本传输到另一个表单的标签上。我已经尝试过了
form2 frm2 = new form2();
frm2.labelX1.Text = this.button1.text;
但它不起作用。有没有一种简单、直接的方法来做到这一点?
我有一个名为LabelX1的标签,它位于form2上。在form1上,我有一个按钮。我想将按钮的文本传输到另一个表单的标签上。我已经尝试过了
form2 frm2 = new form2();
frm2.labelX1.Text = this.button1.text;
但它不起作用。有没有一种简单、直接的方法来做到这一点?
public string LabelText
{
get
{
return this.labelX1.Text;
}
set
{
this.labelX1.Text = value;
}
}
那么你可以这样做:
form2 frm2 = new form2();
frm2.LabelText = this.button1.text;
public Form2(string labelText)
{
InitializeComponent();
this.labelX1.Text = labelText;
}
然后创建Form2,传入文本:
Form2 frm2 = new Form2(this.button1.text);
或者你可以这样做 >>
((Label)frm2.Controls["labelX1"]).Text = "test";
在form2内写入以下内容
public void ChangeLabel(string s)
{
labelX1.Text = s;
}
那么在创建 Form 2 的地方,执行以下操作:
form2 frm2 = new form2();
frm2.ChangeLabel(this.button1.text);
有没有一种简单、直接的方法来做到这一点?
最简单的方法是将labelX1作为form2的公共成员。你遇到的问题是因为从Form1代码中无法看到form2.labelX1。在form2设计师中,您可以进入labelX1的属性并将其可见性设置为public/internal。
更好的方法是公开labelX1.Text作为一个属性,在类外部的代码中可以设置它。
form2 frm2 = new form2();
((Label)frm2.Controls["labelX1"]).Text=button1.Text;
frm2.Show();
labelX1
设为公共,这样它就能工作了,但有更好的方法:
http://www.codeproject.com/Articles/14122/Passing-Data-Between-Forms
你需要做的唯一一件事就是将另一个表单的标签设置为公共。
例如: Form1:
public System.Windows.Forms.Label txtInfo;
然后在Form2中
Form1 frm =new Form1();
frm.txtInfo.text="....."//you have access because is public
我将父窗口的属性更改为以下代码:
this.MdiParent.Controls["label1"].Text = "test";
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;
}
}