C# 我想从一个表单中获取一个变量,然后将它交给另一个表单中的标签。我该怎么做
好的,我有六个变量,当通过按钮调用不同的方法时,它们都会改变 在另一种形式中,我有六个相应的标签。我想从第一个表单中获取变量,当按下第一个表单上的按钮时,在第二个表单中设置C# 我想从一个表单中获取一个变量,然后将它交给另一个表单中的标签。我该怎么做,c#,C#,好的,我有六个变量,当通过按钮调用不同的方法时,它们都会改变 在另一种形式中,我有六个相应的标签。我想从第一个表单中获取变量,当按下第一个表单上的按钮时,在第二个表单中设置SomeLabel.text 我一直试图以这种方式来实现这一点Name=Mainform.InitializeComponent.SomeLabel.Text但这不起作用。我知道InitializeComponent方法是私有的。我曾尝试将其更改为public,但也没有取得成效(编码也不好)。所以我来这里问我该怎么做。我曾考虑
SomeLabel.text
我一直试图以这种方式来实现这一点
Name=Mainform.InitializeComponent.SomeLabel.Text代码>但这不起作用。我知道InitializeComponent
方法是私有的。我曾尝试将其更改为public,但也没有取得成效(编码也不好)。所以我来这里问我该怎么做。我曾考虑使用get和set设置,但仍然无法从第一个表单访问标签。我没有包括我的代码,因为代码中没有任何内容被破坏,所有需要的部分都在帖子中。将标签的属性设置为公共。因此,您可以从表单对象访问标签。您可以使用公共/内部方法
或使用“公共/内部属性”共享变量
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
Form2 frm = new Form2();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
frm.Show();
}
private void button1_Click(object sender, EventArgs e)
{
frm.SetTextLabel1("Hello world");
//or
frm.Label1Text = "HEllo world again";
}
}
}
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
//using method to set the value of label
public void SetTextLabel1(string value)
{
label1.Text = value;
}
//using property to set the value of label
public string Label1Text
{
set { label1.Text = value; }
}
}
}
好吧,有一种快速而肮脏的方式,你已经被提供了。或者编写一个类来保存这些公共数据,添加一个方法从form1的按钮调用,该按钮触发form2订阅的事件,读取数据并更新其标签。他们都知道中间类,但都不需要知道另一个。为什么不在form2中将这六个变量作为公共静态变量
public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form2.VariableLable1 = "a";
Form2.VariableLable2 = "b";
}
}
public partial class Form2 : Form
{
public static string VariableLable1,VariableLable2;
private void form_load(object sender, EventArgs e)
{
Lable1.Text = VariableLable1;
Lable1.Text = VariableLable2;
}
}
你能把打开第二张表格的代码显示出来吗?它来自第一个表单吗?我正计划使用SecondForm.InitializeComponent()以与第一个表单相同的方式初始化它代码>我猜这可能也行不通,因为它是私有的。将标签的修饰符设置为公共是一种糟糕的编码实践@AppDeveloper,我回答“我仍然无法从第一个表单访问标签”是的,但仍然坚持代码站立是学习编码的更好方法@RezaArab,答案是肯定的。是的,我们偶尔都会这样做,但这是最后的选择,不是第一个选择。我可能会像你建议的那样使用一个公共数据类,因为这种快速而肮脏的方式似乎对我不起作用。这表明你的设计太干净了,不适合我。:)我认为将它整合到我的表格中会很顺利。现在唯一阻碍我的是,我一直收到这个错误无法分配给'SetInfo',因为它是围绕这个public void StatTransfer(){mForm.SetInfo=Name;}
函数的一个“方法组”
,这就是public void SetInfo(字符串值){pcnamelab.Text=value;}
是基本的setinfo方法。如果您试图创建setinfo方法,它应该是一个属性,最重要的是您不需要两者,它们中的任何一个都可以完成任务!