C# winform控件之listview学习积累

时间:2023-11-11 12:30:50
//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
}