C# 获取ListView行索引值

C# 获取ListView行索引值,c#,C#,我试图编写一段代码,在listView中搜索特定字符串的出现 找到字符串后,代码应存储在listView中找到该字符串的行的索引值 编译程序后,此行出现ArgumentOutOfRangeException错误:- store[index]=listView1.选择的骰子[0] 有人能告诉我如何解决这个问题吗 提前谢谢 错误消息:- 中发生类型为“System.ArgumentOutOfRangeException”的未处理异常 System.Windows.Forms.dll 其他信息:“0”

我试图编写一段代码,在listView中搜索特定字符串的出现

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

编译程序后,此行出现ArgumentOutOfRangeException错误:-

store[index]=listView1.选择的骰子[0]

有人能告诉我如何解决这个问题吗

提前谢谢

错误消息:-

中发生类型为“System.ArgumentOutOfRangeException”的未处理异常 System.Windows.Forms.dll

其他信息:“0”的InvalidArgument=值对于“索引”无效

System.ArgumentOutOfRangeException

{“InvalidArgument=0”的值对“索引”无效。\r\n参数名称:索引“}

代码:-

  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;   

    }
private void按钮3\u单击(对象发送者,事件参数e){
int[]存储=新int[20];
string s=“通过名字搜索”;
int结果=0;
整数计数=0;
int指数=0;
结果=string.Compare(textBox1.Text,s);
if((result==0)| |(String.IsNullOrEmpty(textBox1.Text))){
MessageBox.Show(“请输入名字…”);
返回;
}
foreach(listView1.Items中的ListViewItem项){
foreach(item.SubItems中的ListViewItem.ListViewSubItem子项){
if(子项.Text.ToLower().StartsWith(textBox1.Text.ToLower())){
计数++;
statusBar1.Panels[2].Text=“Found:+count.ToString();
store[index]=listView1.选择的骰子[0];
索引++;
}
}
}
对于(索引=0;索引<计数;索引++){
Show(存储[index].ToString());
//MessageBox.Show(listView1.Items[store[index]].SubItems[0].ToString());
}
按钮1.Text=“清除”;
textBox1.Visible=false;
按钮3.可见=假;
按钮2.可见=假;
}

对于列表,请使用引用而不是索引。列表很有用,因为您不需要索引来处理它们,但需要将引用保留在某个位置或通过其值查找对象。

对于列表,请使用引用而不是索引。列表很有用,因为您不需要索引来处理它们,但您需要将引用保留在某个位置或通过其值查找对象。

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

Like every item will know his index of course

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

Like every item will know his index of course

如何做到这一点?当您执行{myObject=new Object}时,您创建了它的一个实例,但是myObject只保留对它的引用,而不是对象本身。请告诉我它是否对您有帮助:)因此我添加了以下行ListView listView1=new ListView();在int[]store=newint[20]上方的方法顶部;程序执行时没有任何错误。但是,程序没有找到由count变量指示的任何项。如果我删除ListView listView1=new ListView();行,它会找到要搜索的对象。如何做到这一点?当您执行{myObject=new Object}时,您会创建它的一个实例,但myObject只保留对它的引用,而不是对象本身。请告诉我它是否对您有帮助:)因此我添加了以下行ListView listView1=new ListView();在int[]store=newint[20]上方的方法顶部;程序执行时没有任何错误。但是,程序没有找到由count变量指示的任何项。如果我删除ListView listView1=new ListView();第行,它查找搜索的对象。请在答案中包含代码段,否则这最多是一条注释。请在答案中包含代码段,否则这最多是一条注释。