如何从一个表单访问数据并带到另一个表单

时间:2016-04-22 06:13:11

标签: c# winforms label

我正在尝试将标签文本拉入同一解决方案中的另一个表单,以便在if语句中使用。但是,似乎它并没有从现场提取数据。我正在尝试根据表单1中的标签文本更改标签背景的颜色。非常感谢任何帮助。

表格1:

public void button1_Click(object sender, EventArgs e)
{
    form1 view = new form();
    view.Show();
    view.label1 = label1.Text.ToString();
}

表格2:

public string label1 { get; set; }

public void Display()
{
    if (label1 == "1")
    {
        for (int i = 0; i < nWinnings.Length; i++)
        {
            Label label = new Label();
            label.BackColor = Color.Red;
            ...
        }
     }
     else
     {
         for (int i = 0; i < nWinnings.Length; i++)
        {
            Label label = new Label();
            label.BackColor = Color.Blue;
            ...
        }
      }
}

标签还有更多,但标签工作正常减去颜色变化。

2 个答案:

答案 0 :(得分:1)

这是不正确的:

Label label = new Label();

您无法创建Label实例...它与第一个Label中的原始Form实例完全没有关联,并且更改它上面的任何属性也不会影响原来的属性。

您需要传递对整个Label

的引用
// Form 1

public void button1_Click(object sender, EventArgs e)
{
    form1 view = new form();
    view.label1 = label1;
    view.Show();
}

// Form 2

public Label label1 { get; set; }

public void Display()
{
    if (label1.Text == "1")
    {
        for (int i = 0; i < nWinnings.Length; i++)
        {
            label1.BackColor = Color.Red;

            // ... etc, etc

我会限制你对其他表单控件的引用传递多少。根据我的经验,当你这么做时,代码开始变得非常混乱。

答案 1 :(得分:0)

如果我理解的是正确的,那么你有2个表格。 FORM1&amp; FORM2。 FORM1中有一个标签控件LABEL1。您阅读此文并将其传递给FORM2。

在FORM2中,您有另一个标签控件LABEL2,其背景颜色要更改。

您可以在FORM2中声明一个字符串变量。 向FORM2添加新构造函数以接受字符串参数,并将此值设置为字符串变量。 在FORM2 OnLoad中,您可以检查字符串变量的值和 然后, LABEL2.BackColor = if-else循环中的whateverColor。

FORM1

中的类似内容
FORM2 newForm = new FORM2(LABEL1.Text);
newForm.Show();

和FORM2

private label1String = String.Empty();

public FORM2(string arg)
{
    ...Default Initialization Code...
    label1String = arg;
}

private void ChangeLabel2Color()
{
    if(label1String == "1")
    {
        LABEL2.BackColor = whateverColorYouNeed;
    }
    else
    {
        ...WHATEVER YOU NEED TO DO...
    }
}

我直接编写了代码,因此可能存在语法错误。