private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
ListView lv = (ListView)sender;
textBox2.Text = lv.FocusedItem.SubItems[3].Text;
textBox3.Text = lv.FocusedItem.SubItems[0].Text;
}
我认为上面的代码不安全,这会在更新listview项目时触发空引用错误,以便其他表单如何确保它能够保持免受Null引用错误的影响?
答案 0 :(得分:2)
这是一个私有方法,因此除非您从自己的类中执行此操作,否则无法将其作为事件处理程序添加到任何事件中。因此,它不会从您在代码中告诉它的地方接收任何事件。它不会在其他表单上接收ListView控件的事件(除非您指示它执行此操作)。如果您唯一关心的是停止空引用异常,则只需添加检查以查看属性是否为null。当没有FocusedItem时,您自己表单上的ListView控件仍然可能引发事件,或者焦点项目没有每个预期的子项目。因此,为了完全安全,你可以这样做:
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (sender != null)
{
ListView lv = (ListView)sender;
if ((lv.FocusedItem != null) && (lv.FocusedItem.SubItems.Count >= 4))
{
textBox2.Text = lv.FocusedItem.SubItems[3].Text;
textBox3.Text = lv.FocusedItem.SubItems[0].Text;
}
}
}
答案 1 :(得分:1)
您应该检查焦点项目中是否有4个子项目,如下所示:
ListView lv = (ListView)sender;
if (lv.FocusedItem != null && lv.FocusedItem.SubItems.Count > 3)
{
textBox2.Text = lv.FocusedItem.SubItems[3].Text;
textBox3.Text = lv.FocusedItem.SubItems[0].Text;
}