0

我正在使用两个 Windows 窗体应用程序,我想从第 2 窗体设置第 1 窗体标签的值。但是当我以第二种形式访问第一种形式标签时,应用程序会显示此错误

Object reference not set to an instance of an object.

我正在使用此语句访问

login_form.ActiveForm.Controls["label_name"].Text = "Hello World";

有时我工作得很好,但有时会显示此错误

请解决我的问题。我会非常感谢你。

4

1 回答 1

1

明智的做法是:

  1. 在第一种形式中公开一个属性,您可以通过它对标签文本进行更改。
  2. 在您可以调用以影响标签文本更改的第一种形式中公开一个方法。

示例 #1:

public class Form1 : Form
{
    public String LabelText
    {
        get { return label_name.Text; }
        set { label_name.Text = value; }
    }
}

//from Form2...
login_form.LabelText = "Hello World";

示例 #2:

public class Form1 : Form
{
    public void SetLabelText(String TextToSet)
    {
        label_name.Text = TextToSet;
    }
}

//from Form2...
login_form.SetLabelText("Hello World");

我不建议简单地将控件更改为Public. 间接访问是可取的。

于 2013-09-18T12:58:23.497 回答