我有一个名为LabelX1的标签。这是在form2上。在form1上,我有一个按钮。我希望将按钮的文本传输到另一个表单的标签。我试过了
form2 frm2 = new form2();
frm2.labelX1.Text = this.button1.text;
但它不起作用。这样做是否有一种简单直接的方式?
答案 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)