2013-07-17 94 views
1

listview填充自定义类型数据类型列表。现在我想将选定的行从列表视图转换回自定义数据类型,我试过这个将所选项目转换回自定义数据类型,winforms

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属性之前从listview中删除所选项目,因为我想减少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; 
+0

尝试在末尾添加.value的。 – Chris

+0

你能告诉我们“填充你的listview”的代码吗? –

+0

@KingKong按照您的要求添加 – panjo

回答

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; 
} 
+0

哪里可以找到ListViewItem的Value属性? –

+0

找不到Value属性。 – panjo

+0

@panjo,对不起,我以为你在谈论WebForms,请参阅更新。 – yogi

1

我想修行者的回答应该这样解释: 当你正在做的转换(CustomDataType)x,如果x为null或不是CustomDataType那么你会得到例外。

当你做x as CustomDataType,如果x为空或不是CustomDataType你只会得到空,然后你检查if(selected != null)看看转换是否通过。

但是,您应经常检查

listview1.SelectedItems != null && listview1.SelectedItems.Count > 0