2013-07-17 92 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