我有3个表单:form1(我想使用我在其中创建List并添加内容的form3中的List),form2(其中包含一个返回form1的按钮和一个返回form3的按钮,获取列表中的值。
我尝试创建以下类:
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>();
}
}
然后声明尝试从form3添加列表中的东西,如下所示:
//这是宣言
public ListArticle _articles = new ListArticle();
public ListArticle Articles
{
get
{
return _articles;
}
set
{
_articles = value;
}
}
这是我添加的方式:
_articles.Clothes.Add("T-shirt " + tshirt_number.ToString());
_articles.Colors.Add(closestColor2(clist, color));
这就是我试图获取值的方式:
当我关闭form3
时我这样做:
Form2 frm = new Form2();
frm.Show();
Articles = _articles;
this.Hide();
在form2中我什么都不做..
并且在form1中我尝试这样做:
//声明
public ListArticle Articles;
public ListArticle _articles
{
get
{
return Articles;
}
set
{
Articles = value;
}
}
//这就是我尝试的方法,但每次都会返回null。
private void button3_Click(object sender, EventArgs e)
{
try
{
Form3 f = new Form3();
f.Articles = Articles;
foreach (string c in Articles.Clothes)
{
MessageBox.Show(c);
}
}
catch
{
MessageBox.Show("Articles is null.");
}
}
答案 0 :(得分:0)
如果您希望能够在所有表格之间分享文章,您可以将衣服和颜色系列设为静态:
public class ListArticle
{
public static List<string> Clothes { get; private set; }
public static List<string> Colors { get; private set; }
static ListArticle()
{
Clothes = new List<string>();
Colors = new List<string>();
}
}
然后,您可以通过以下形式添加文章:
ListArticle.Clothes.Add("T-shirt " + tshirt_number.ToString());
ListArticle.Colors.Add(closestColor2(clist, color));
...并从另一个表单中检索文章:
private void button3_Click(object sender, EventArgs e)
{
try
{
foreach (string c in ListArticle.Clothes)
{
MessageBox.Show(c);
}
}
catch
{
MessageBox.Show("Articles is null.");
}
}
使用此方法,您无需在任何一种表单中创建任何其他“文章”属性。您只需从所有表单访问相同的静态集合。