public void FillLv()
{
this.listView1.Items.Clear();
sdr=this.ShowBookInformation();
while(sdr.Read())
{
ListViewItem item=new ListViewItem(sdr[0].ToString());
item.SubItems.Add(sdr[1].ToString());
item.SubItems.Add(sdr[2].ToString());
item.SubItems.Add(sdr[3].ToString());
item.SubItems.Add(sdr[4].ToString());
this.listView1.Items.Add(item); } }
在listview里面想通过点击选择项,将各列内容显示在文本框中,
private void listView1_Click(object sender, System.EventArgs e)
{ this.txtNumber.Text=this.listView1.SelectedItems[0].Text;
this.txttitle.Text=this.listView1.SelectedItems[1].Text;
}
运行提示:
指定的参数已超出有效值的范围。
应该怎么修改一下呢?
{
this.listView1.Items.Clear();
sdr=this.ShowBookInformation();
while(sdr.Read())
{
ListViewItem item=new ListViewItem(sdr[0].ToString());
item.SubItems.Add(sdr[1].ToString());
item.SubItems.Add(sdr[2].ToString());
item.SubItems.Add(sdr[3].ToString());
item.SubItems.Add(sdr[4].ToString());
this.listView1.Items.Add(item); } }
在listview里面想通过点击选择项,将各列内容显示在文本框中,
private void listView1_Click(object sender, System.EventArgs e)
{ this.txtNumber.Text=this.listView1.SelectedItems[0].Text;
this.txttitle.Text=this.listView1.SelectedItems[1].Text;
}
运行提示:
指定的参数已超出有效值的范围。
应该怎么修改一下呢?
你这个是什么意思???同时选中了两个吗?
{ this.txtNumber.Text=this.listView1.SelectedItems[0].Text;
this.txttitle.Text=this.listView1.SelectedItems[1].Text;
//如果不是多选的话 SelectedItems[1].Text; 肯定越界了}
然后在多选的情况下,你写的才不会越界
1:是越界了,即[1]在没有多选的情况下是不可访问的,越界。
2:没有准确的理解SelectedChanged事件。
比如首先你选择Item 1,然后再选择Item 2。这个过程中会发生两次 SelectedChanged事件。首先是由选择1,变为选择空,然后再变为选择2!
所以你要加上一个判断:
if(listView1.SelectedItems.Count>0)
{
//..这里加上你对SelectedItems[0]的处理。
}另外我怀疑你的SelectedItems[1]的意思是不是指:
listView1.SelectedItems[0].SubItems[0]这样的访问方式?呵呵。如果是的话,你就应该按我这样写。
楼上正解,,如果你只选一行的话,索引应该是0,,如果你要选多行,还得设置this.listView1. MultiSelect=true;,,很简单,老板,结帐,,,