0

我在 Windows 窗体应用程序 PaymentInfo 中有一个方法,它在填充listView1listView 后从子项中填充标签:

internal void PaymentInfo()
{
        label3.Text = "Amount Paid: " + listView1.SelectedItems[0].SubItems[1].Text.ToString();
        label3.Refresh();
        label6.Text = "Payment Type: " + listView1.SelectedItems[0].SubItems[5].Text.ToString();
        label6.Refresh();
}

listView1填充后,我尝试使用以下方法调用该方法:

 listView1.Items[0].Selected = true;
 listView1.Items[0].Focused = true;
 PaymentInfo();

这有效地选择了列表中的第一项,但是当它尝试运行 PaymentInfo 时,我ArgumentOutOfRangeException在开头的行中得到一个label3.Text,详细信息是

“InvalidArgument = '0' 的值对 'index' 无效。”

我也用 调用 PaymentInfo listView1_MouseClick,它工作正常。我检查了其他几件事,并注意到即使我以编程方式选择项目,也会SelectedItems.Count返回0. 为什么会这样?谢谢!

4

1 回答 1

0

不知道确切原因,但唯一可行的方法是将代码放入 Load 事件中。

private void PastPayment_Load(object sender, EventArgs e)
    {
        listView1.Items[0].Selected = true;
        listView1.Items[0].Focused = true;
        PaymentInfo();
        PopDetails();
        this.listView1.SelectedIndexChanged += listView1_SelectedIndexChanged;
    }
于 2013-04-02T01:09:58.797 回答