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方法,它应该是一个属性,最重要的是您不需要两者,它们中的任何一个都可以完成任务!