将所选项目转换回自定义数据类型winforms
本文关键字:定义数据类型 winforms 转换 选项 项目 | 更新日期: 2023-09-27 18:23:36
列表视图由自定义类型数据类型的列表填充。现在我想将所选行从列表视图转换回自定义数据类型,我尝试了这个
private void btnDelete_Click(object sender, EventArgs e)
{
var selected = (CustomDataType)listview1.SelectedItems[0];
}
这行不通。原因是在删除之前,我需要访问CustomDataType
以使用此CustomDataType中的值来减少totalValue。
再次,如何将所选项目从listview
转换为CustomDataType
?
更新:CustomType是ArticleDetails,它具有Article
和int Quantity
属性。并且我想在从列表视图中删除所选项目之前访问CCD_ 6属性,因为我想减小CCD_。
更新2
列表视图是这样填充的
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;
尝试
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;
}
我认为应该解释瑜伽士的答案:当您转换(CustomDataType)x
时,如果x为null或不是CustomDataType
,则会出现异常。
当您执行x as CustomDataType
时,如果x为null或不是CustomDataType
,您只会得到null,然后检查if(selected != null)
以查看转换是否通过。
但是,您应该始终检查
listview1.SelectedItems != null && listview1.SelectedItems.Count > 0