获取ListView行索引值

时间:2017-11-15 16:10:39

标签: c#

我正在尝试编写一段代码来搜索listView以查找特定字符串的出现。

找到字符串后,代码应该存储listView中找到字符串的行的索引值。

编译程序后,此行发生了ArgumentOutOfRangeException错误: -

store [index] = listView1.SelectedIndices [0];

有人可以告诉我如何解决这个问题......

提前致谢

错误讯息: -

发生了'System.ArgumentOutOfRangeException'类型的未处理异常 System.Windows.Forms.dll中

其他信息:InvalidArgument =值'0'对'index'无效。

System.ArgumentOutOfRangeException

{“InvalidArgument ='0'的值对'index'无效。\ r \ nParameter name:index”}

代码: -

  private void button3_Click(object sender, EventArgs e){
        int[] store = new int[20]; 
        string s = "    Search Via Forename";
        int result = 0;
        int count = 0;
        int index = 0;

        result = string.Compare(textBox1.Text, s);

        if ((result == 0) || (String.IsNullOrEmpty(textBox1.Text))){
            MessageBox.Show("Please input forename...");
            return;
        }

        foreach (ListViewItem item in listView1.Items){
            foreach (ListViewItem.ListViewSubItem subItem in item.SubItems){
                if (subItem.Text.ToLower().StartsWith(textBox1.Text.ToLower())){
                    count++;
                    statusBar1.Panels[2].Text = "Found: " + count.ToString();
                    store[index] = listView1.SelectedIndices[0];
                    index++;
                }
            }
        }

        for (index = 0; index < count; index++){
            MessageBox.Show(store[index].ToString());
            // MessageBox.Show(listView1.Items[store[index]].SubItems[0].ToString());
        }

        button1.Text = "Clear";
        textBox1.Visible = false;
        button3.Visible = false;
        button2.Visible = false;   

    }

2 个答案:

答案 0 :(得分:0)

对于列表使用引用而不是索引。列表非常有用,因为您不需要使用索引来处理它们,但您需要将引用保留在某处或按其值查找对象。

答案 1 :(得分:0)

也许你可以使用你自己的基于lisboxitem的类,它可以存储字体,大小和索引,甚至更多。

Like every item will know his index of course