如何从另一个文件中获取数据到我的form1 shapelist?

时间:2016-03-29 23:09:22

标签: c# winforms

我有一个包含

的form1.cs
 List<Shape> shapeList = new List<Shape>();
 listBoxDB listBoxHist = new listBoxDB();
 public Form1()
    {
        listBoxHist.Show();
        InitializeComponent();
        this.DoubleBuffered = true;
    }

我有另一个名为listBoxDB.cs的文件,它有一个按钮,它将从listBox中的列表框中获取数据,并在其中存储form1使用的字符串Lname。但是,由于保护级别的原因,我无法访问我的shapelist以正确添加到列表中。我该如何解决这个问题?

 private void button2_Click(object sender, EventArgs e) //load 1 line
    {
        //string s = Form1.datInfo;
        Form1.Lname = listBox1.GetItemText(listBox1.SelectedItem);
        //Console.WriteLine(text);
        Shape Line = new Line();
        Line.loadLine();
        Form1.shapeList.Add(Line); <-- I get a protection error here.
        Invalidate();
    }

我可以使用此getter / setter

访问Lname
public static string Lname { get; set; }

如何在另一种形式的form1中访问我的shapeList?

1 个答案:

答案 0 :(得分:0)

您的问题似乎是静态变量和实例变量之间的区别。

如果您Lname staticpublic static string Lname { get; set; },那么您可以通过Form1.Lname访问它,但它实际上会成为全局定义的变量。如果您创建两个Form1个实例,它们将共享相同的Lname,而这通常不是您应该做的。

相反,您应该将其声明为public string Lname { get; set; },然后您可以在SetForm1表单上设置listBoxDB方法,以将引用传递给Form1的实例这样您就可以从Form1访问public的{​​{1}}个变量。

您的代码可能如下所示:

listBoxDB