我在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时,我在ArgumentOutOfRangeException
开始的行中得到一个label3.Text
,其详细信息为
“InvalidArgument ='0'的值对'index'无效。”
我也用listView1_MouseClick
调用PaymentInfo,它运行正常。我检查了其他一些事情,并注意到即使我以编程方式选择项目,SelectedItems.Count
也会返回0
。为什么会这样?谢谢!
答案 0 :(得分:1)
不确定原因,但唯一可行的方法是将代码放入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;
}