我正在尝试将标签文本拉入同一解决方案中的另一个表单,以便在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;
...
}
}
}
标签还有更多,但标签工作正常减去颜色变化。
答案 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...
}
}
我直接编写了代码,因此可能存在语法错误。