0

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' には無効です。」

で 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 に答える