我有一个包含
的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
访问Lnamepublic static string Lname { get; set; }
如何在另一种形式的form1中访问我的shapeList?
答案 0 :(得分:0)
您的问题似乎是静态变量和实例变量之间的区别。
如果您Lname
static
,public static string Lname { get; set; }
,那么您可以通过Form1.Lname
访问它,但它实际上会成为全局定义的变量。如果您创建两个Form1
个实例,它们将共享相同的Lname
,而这通常不是您应该做的。
相反,您应该将其声明为public string Lname { get; set; }
,然后您可以在SetForm1
表单上设置listBoxDB
方法,以将引用传递给Form1
的实例这样您就可以从Form1
访问public
的{{1}}个变量。
您的代码可能如下所示:
listBoxDB