1

リストビューのアイテムをクリック可能にしてメッセージボックスに表示する方法をまだ理解できません。

これは私のコードです。

private void button6_Click(object sender, EventArgs e)
    {
        ListViewItem listviewitem;

        listviewitem = new ListViewItem("John");
        listviewitem.SubItems.Add("Smith");
        listviewitem.SubItems.Add("kaya");
        listviewitem.SubItems.Add("bun");
        this.listView1.Items.Add(listviewitem);
        listView1.FullRowSelect = true;

//ヘッダーを表示listView1.View=View.Details;

        // Loop through and size each column header to fit the column header text.
        foreach (ColumnHeader ch in this.listView1.Columns)
        {
            ch.Width = -2;
        }

}

itemActiveを読み、これを試しました。イム追加listView1.SelectedItems[0].Text

    private void button6_Click(object sender, EventArgs e)
        {
            ListViewItem listviewitem;

            listviewitem = new ListViewItem("John");
            listviewitem.SubItems.Add("Smith");
            listviewitem.SubItems.Add("kaya");
            listviewitem.SubItems.Add("bun");
            this.listView1.Items.Add(listviewitem);
            listView1.FullRowSelect = true;

            MessageBox.Show("You clicked " + listView1.SelectedItems[0].Text);
}

このプリントアウトエラー

引数が範囲外です。「0」は有効なインデックス番号ではありません。

これで私を助けてください。

4

3 に答える 3

6

で新しくbutton6_Click()作成されたものだけを追加listviewitemするlistView1

private void button6_Click(object sender, EventArgs e)
{
    ListViewItem listviewitem;

    listviewitem = new ListViewItem("John");
    listviewitem.SubItems.Add("Smith");
    listviewitem.SubItems.Add("kaya");
    listviewitem.SubItems.Add("bun");
    this.listView1.Items.Add(listviewitem);
    listView1.FullRowSelect = true;

    //MessageBox.Show("You clicked " + listView1.SelectedItems[0].Text);
}

Clickに対してイベントを登録するlistView1

this.listView1.Click += new System.EventHandler(this.listView1_Click);

そして、それはイベントハンドラーでチェックしますlistView1.SelectedItems[0]

private void listView1_Click(object sender, EventArgs e)
{
     if(listView1.SelectedItems.Count > 0)
             MessageBox.Show("You clicked " + listView1.SelectedItems[0].Text);
}

ドキュメントについては、MSDNを確認してください

于 2012-08-10T04:53:38.107 に答える
1

あなたは実際にアイテムを選択していません、そしてそれはあなたがエラーを得るときです:

InvalidArgument=「0」の値は「インデックス」には無効です。

アイテムが選択されていることを確認するためにいくつかの保護を置きます:

if (listView1.SelectedItems.Count > 0)
{
    MessageBox.Show("You clicked " + listView1.SelectedItems[0].Text);
}
else
{
     MessageBox.Show("Please select an item");
}

または、コードでアイテムを選択します。

private void button6_Click(object sender, EventArgs e)
    {
        ListViewItem listviewitem;

        listviewitem = new ListViewItem("John");
        listviewitem.SubItems.Add("Smith");
        listviewitem.SubItems.Add("kaya");
        listviewitem.SubItems.Add("bun");
        this.listView1.Items.Add(listviewitem);
        //listView1.FullRowSelect = true;
        listView1.Items[0].Selected = true;
        MessageBox.Show("You clicked " + listView1.SelectedItems[0].Text);
}
于 2012-08-10T04:55:14.580 に答える
0

アクティブなアイテムがありますか?リスト内のアイテムを選択していないことが原因である可能性があります。選択したアイテムを確認し、

 string msg = (listView1.SelectedItems.Count >0) ? "You Clicked " + 
listView1.SelectedItems[0].Text  : "Please select an item.";

MessageBox.Show(msg);
于 2012-08-10T04:48:30.740 に答える