将所选项目转换回自定义数据类型,winforms

时间:2013-07-17 08:44:48

标签: c# .net winforms

listview填充了自定义类型数据类型的列表。现在我想将listview中的选定行转换回自定义数据类型,我试过这个

private void btnDelete_Click(object sender, EventArgs e)
{
   var selected = (CustomDataType)listview1.SelectedItems[0];
}

这不起作用。原因是我需要访问CustomDataType以在删除之前使用此CustomDataType中的值减少totalValue。

同样,如何将所选项目从listview转换为CustomDataType

更新: CustomType是ArticleDetails,具有Articleint Quantity属性。 我希望在从列表视图中删除所选项目之前访问Article.Price属性,因为我想减少totalPrice值。

UPDATE2

listview就像这样填充

listview1.Columns.Add("Col1");
listview1.Columns.Add("Col2");
foreach(ArticleDetails ad in myCollection)
{
   var row = new ListViewItem(ad.Article.Name);
   row.SubItems.Add(ad.Article.Price);
}
listVuew1.View = View.Details;

2 个答案:

答案 0 :(得分:1)

尝试

listview1.Columns.Add("Col1");
listview1.Columns.Add("Col2");
foreach(ArticleDetails ad in myCollection)
{
   var row = new ListViewItem(ad.Article.Name);
   row.Tag = ad; // You can use this to store your object
   row.SubItems.Add(ad.Article.Price);
}
listview1.View = View.Details;


private void btnDelete_Click(object sender, EventArgs e)
{
   var selected = (CustomDataType)listview1.SelectedItems[0].Tag;
}

答案 1 :(得分:1)

我认为应该解释瑜伽士的答案: 当您进行转换(CustomDataType)x时,如果x为空或不是CustomDataType,那么您将获得异常。

当您执行x as CustomDataType时,如果x为空或不是CustomDataType,则只会为空,然后检查if(selected != null)以查看是否已转换。

但是,你应该经常检查

listview1.SelectedItems != null && listview1.SelectedItems.Count > 0
相关问题