我正在尝试编写一段代码来搜索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;
}
答案 0 :(得分:0)
对于列表使用引用而不是索引。列表非常有用,因为您不需要使用索引来处理它们,但您需要将引用保留在某处或按其值查找对象。
答案 1 :(得分:0)
也许你可以使用你自己的基于lisboxitem的类,它可以存储字体,大小和索引,甚至更多。
Like every item will know his index of course