以编程方式选择列表视图项不工作

本文关键字:工作 视图 列表 编程 方式 选择 | 更新日期: 2023-09-27 18:03:20

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

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时,我在开始label3.Text的行中得到ArgumentOutOfRangeException,详细信息为

"InvalidArgument= '0'的值对'index'无效。"

我也用listView1_MouseClick调用PaymentInfo,它工作得很好。我检查了其他一些事情,并注意到,即使我以编程方式选择项目,SelectedItems.Count返回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;
    }