我想在Form2中创建一个列表_Buffer
,其中的数据来自Form3
,Form4
,Form5
,Form6
,Form7
和{ {1}}。如果我尝试添加Form8
中创建的另一个列表中的其他元素,我已经使它工作但只有1个表格,例如我已经从Form4
添加... Form3
将告诉我只有来自Form2
的元素没有我之前添加的Form4
元素。我是这样做的:
Form3
的代码:
Form2
ListArticle _Buffer = new ListArticle();
public void SetData(ListArticle article)
{
_Buffer = article;
}
的代码:
Form3
注意:public ListArticle _articles = new ListArticle();
public ListArticle Articles
{
get
{
return _articles;
}
set
{
_articles = value;
}
}
foreach (Color color in dominantColours)
{
MessageBox.Show(closestColor2(clist, color));
tshirt_number++;
_articles.Clothes.Add("T-shirt " + tshirt_number.ToString());
_articles.Colors.Add(closestColor2(clist, color));
Console.WriteLine("K: {0} (#{1:x2}{2:x2}{3:x2})", color, color.R, color.G, color.B);
string hex = color.R.ToString("X2") + color.G.ToString("X2") + color.B.ToString("X2");
}
会返回closestColor2
;
以下是我如何将它们添加到string
中的列表:
Form2
Form2 frm = new Form2();
frm.Show();
Articles = _articles;
frm.SetData(Articles);
this.Hide();
代码与Form3中的代码非常相似..只是另一个列表。
以下是Form4
类:
ListArticle
所以基本上我想在public class ListArticle
{
public List<string> Clothes { get; private set; }
public List<string> Colors { get; private set; }
public ListArticle()
{
Clothes = new List<string>();
Colors = new List<string>();
}
}
中添加的元素末尾添加我在Form4
中添加的元素。
答案 0 :(得分:1)
在您的问题中,您提到“Form4
代码与Form3”中的代码非常相似。
然而在Form3
中,您创建了一个新的ListArticle:public ListArticle _articles = new ListArticle();
如果您在Form4
和其他表单上执行相同操作,那么每个表单都会覆盖您的列表。每个表单都会创建自己的新列表。
我认为您要做的是在主程序Buffer
上而不是在Form2上创建一个公共Program.cs
字段。像这样:
static class Program
{
public ListArticle Buffer = new ListArticle(); // Add this line
static void Main()
....
}
通过这种方式,您可以使用Program.Buffer
从每个表单访问您的缓冲区。
您可以在每个表单中向缓冲区添加新文章,如下所示:
Program.Buffer.Clothes.Add(...)
Program.Buffer.Colors.Add(...)
答案 1 :(得分:0)
用这条线......
_Buffer = article;
...您正在使用新列表替换您之前的列表。显然,前一个列表中的所有条目都在此过程中丢失。您需要添加新列表的条目:
if (_Buffer == null) {
_Buffer = new ListArticle();
}
_Buffer.Clothes.AddRange(article.Clothes);
_Buffer.Colors.AddRange(article.Colors);