//1.用key給ListViewItem 的 SubItems賦值
ListViewItem listViewItem= listView1.Items.Add("第一列文字");
listViewItem.SubItems.Add(new ListViewItem.ListViewSubItem() { Name = "這里就是key", Text = "這里是顯示的文字" });
//2.用key取ListViewItem 的 SubItems
string text= listView1.SelectedItems[0].SubItems["這里就是key"].Text
//3.給ListView添加數據並且設置選中項后,this.listView1.SelectedItems.Count一直為0;在網上找了半天,半猜出來了
//首先,給ListView添加數據寫在了ListView的構造函數里面
public listviewtest(List<List> exerciseTable, int selectIndex)
{
InitializeComponent();
for (int i = 0; i < exerciseTable.Count; i++)
{
List exerciseRow = exerciseTable[i];
listView1.Items.Add(exerciseRow[0]);
listView1.Items[i].SubItems.Add(exerciseRow[1]);
listView1.Items[i].SubItems.Add(exerciseRow[2]);
listView1.Items[i].SubItems.Add(exerciseRow[3]);
listView1.Items[i].SubItems.Add(exerciseRow[4]);
}
}
//這個時候緊跟着在后面設置選中項並測試是否有選中項
if (listView1.Items.Count > 0)
{
//listView1.Focus();
listView1.HideSelection = false;
listView1.Items[0].Selected = true;
//listView1.Select();
}
int count = this.listView1.SelectedItems.Count;
/*這個時候this.listView1.SelectedItems.Count一直為零???一直搞不懂為啥
在網上找了相關資料:構造函數是用來創建和實例化對象的,窗體加載事件是在構造函數執行完之后執行的
個人猜測是因為構造函數設置ListView的選中項的時候,ListView還沒有完全被勾畫出來,
也就是說還在內存中(或者其他地方,這一塊一直不懂),然后this.listView1.SelectedItems.Count就一直為零了
把獲取選中項信息的代碼放到Load事件中,經測試結果正確*/
private void listviewtest_Load(object sender, EventArgs e)
{
int count = this.listView1.SelectedItems.Count;//count = 1
}