1

我想要做的是在我的列表视图中选择一个项目,它的工作原理!这是它的工作原理,第一次选择一个项目它很好,第二次得到一个参数超出范围异常的特征[0] .SubItems [1] .Text;在零。从列表视图中选择项目

这是我有:

private void listViewFeatures_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    ListView.SelectedListViewItemCollection features = listViewFeatures.SelectedItems; 
    string feature = features[0].SubItems[1].Text; 
    BL_AddReport addReport = new BL_AddReport(this.databaseConnectionString); 

    Dictionary<string, bool> pictures = addReport.GetpicturesFromFeature(feature); 

    foreach (KeyValuePair<string, bool> pic in pictures) 
    { 
     if (pic.Value) { 
      pictureBoxCar.Image = Image.FromFile(pic.Key); 
     } 
     else 
     { 
      pictureBoxEquip.Image = Image.FromFile(pic.Key); 
     } 
    } 
}  

有谁知道问题是什么?

+1

为什么不实现一个简单的'if'声明,以确保'features.Count> 0'?所有问题都没有了...... – 2012-03-20 13:08:38

+0

请在您的Page_Load事件处理程序中显示代码。这可能是您正在重新加载负载上的数据。 – 2012-03-20 13:09:10

+0

@Alex:你为什么认为这是一个ASP.NET项目?可能是Windows窗体... – 2012-03-20 13:10:00

回答

2

我打赌你会得到这个异常,如果你也点击了列表视图。

请记住,这个事件是为了选择的变化..这可能意味着什么被选中,现在什么都没有。实际上,根据this,对于所选的每件事物都会触发一次事件。如果您遇到这种情况,请查看该链接了解有关此问题的更多信息和设计。

否则只是检查,以确保您的“特色”变量有它内部的任何东西进行索引之前

+0

哈哈,加油!谢谢 – jorne 2012-03-20 13:33:02