如何从ListViewItem中获取数据;窗体,C#
How to get data from ListViewItem; WinForms, C#
我正在将一个表单中的项目添加到另一个表单的列表视图中,并希望将列表视图中的每个项目保存到 JSON 文件中。我不知道该怎么做,并且看了几个地方,但似乎人们使用的方法与我正在使用的方法不同,或者我做错了。
这是我用来将项目添加到列表视图的代码,我如何访问每个 ListViewItem 中的每条数据才能将其全部保存到 JSON 文件中?
ListView lv = (ListView)lf.Controls["mainListView"];
ListViewItem lvi = new ListViewItem();
lvi.Text = Data.Name;
lvi.Tag = Data;
switch (Data.Type)
{
case "Anime":
lvi.ImageIndex = 0;
break;
case "Book":
lvi.ImageIndex = 1;
break;
case "Comic":
lvi.ImageIndex = 2;
break;
case "Game":
lvi.ImageIndex = 3;
break;
case "Manga":
lvi.ImageIndex = 4;
break;
case "Movie":
lvi.ImageIndex = 5;
break;
case "Other":
lvi.ImageIndex = 6;
break;
case "TV":
lvi.ImageIndex = 7;
break;
}
lv.Items.Add(lvi);
这里是值 class 的信息,在这个表格中被命名为 "Data"。
public Values Data
{
get
{
Values v = new Values();
v.Name = itemNameTxt.Text;
v.Type = itemTypeCmb.Text;
v.TypeName = typeNameTxt.Text;
v.Status = statusCmb.Text;
v.Completed = completedNUD.Value;
v.URL = imageUrlTxt.Text;
v.RateOne = rating1.Checked;
v.RateTwo = rating2.Checked;
v.RateThree = rating3.Checked;
v.RateFour = rating4.Checked;
v.RateFive = rating5.Checked;
return v;
}
set
{
itemNameTxt.Text = value.Name;
itemTypeCmb.Text = value.Type;
typeNameTxt.Text = value.TypeName;
statusCmb.Text = value.Status;
completedNUD.Value = value.Completed;
imageUrlTxt.Text = value.URL;
rating1.Checked = value.RateOne;
rating2.Checked = value.RateTwo;
rating3.Checked = value.RateThree;
rating4.Checked = value.RateFour;
rating5.Checked = value.RateFive;
}
}
您似乎正在存储用于填充 ListViewItem
的 Values
class 实例 Tag
属性:
lvi.Tag = Data;
因此您可以在需要时从那里提取它。例如:
ListView lv = ...;
var valueList = lv.Items.Cast<ListViewItem>()
.Select(lvi => (Values)lvi.Tag)
.ToList();
我正在将一个表单中的项目添加到另一个表单的列表视图中,并希望将列表视图中的每个项目保存到 JSON 文件中。我不知道该怎么做,并且看了几个地方,但似乎人们使用的方法与我正在使用的方法不同,或者我做错了。
这是我用来将项目添加到列表视图的代码,我如何访问每个 ListViewItem 中的每条数据才能将其全部保存到 JSON 文件中?
ListView lv = (ListView)lf.Controls["mainListView"];
ListViewItem lvi = new ListViewItem();
lvi.Text = Data.Name;
lvi.Tag = Data;
switch (Data.Type)
{
case "Anime":
lvi.ImageIndex = 0;
break;
case "Book":
lvi.ImageIndex = 1;
break;
case "Comic":
lvi.ImageIndex = 2;
break;
case "Game":
lvi.ImageIndex = 3;
break;
case "Manga":
lvi.ImageIndex = 4;
break;
case "Movie":
lvi.ImageIndex = 5;
break;
case "Other":
lvi.ImageIndex = 6;
break;
case "TV":
lvi.ImageIndex = 7;
break;
}
lv.Items.Add(lvi);
这里是值 class 的信息,在这个表格中被命名为 "Data"。
public Values Data
{
get
{
Values v = new Values();
v.Name = itemNameTxt.Text;
v.Type = itemTypeCmb.Text;
v.TypeName = typeNameTxt.Text;
v.Status = statusCmb.Text;
v.Completed = completedNUD.Value;
v.URL = imageUrlTxt.Text;
v.RateOne = rating1.Checked;
v.RateTwo = rating2.Checked;
v.RateThree = rating3.Checked;
v.RateFour = rating4.Checked;
v.RateFive = rating5.Checked;
return v;
}
set
{
itemNameTxt.Text = value.Name;
itemTypeCmb.Text = value.Type;
typeNameTxt.Text = value.TypeName;
statusCmb.Text = value.Status;
completedNUD.Value = value.Completed;
imageUrlTxt.Text = value.URL;
rating1.Checked = value.RateOne;
rating2.Checked = value.RateTwo;
rating3.Checked = value.RateThree;
rating4.Checked = value.RateFour;
rating5.Checked = value.RateFive;
}
}
您似乎正在存储用于填充 ListViewItem
的 Values
class 实例 Tag
属性:
lvi.Tag = Data;
因此您可以在需要时从那里提取它。例如:
ListView lv = ...;
var valueList = lv.Items.Cast<ListViewItem>()
.Select(lvi => (Values)lvi.Tag)
.ToList();