双击listview中的项目c#

时间:2012-08-10 04:44:13

标签: c# listview double-click

我仍然无法理解如何使listview中的项目可点击并显示消息框。

这是我的代码。

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'不是索引的有效数。

请帮助我。

3 个答案:

答案 0 :(得分: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);
}

有关文档,请please check MSDN

答案 1 :(得分:1)

当您收到错误时,您实际上没有选择项目,那就是:

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

提供一些保护以检查项目是否已被选中:

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);
}

答案 2 :(得分:0)

您确定有活动项目吗? 可能是因为您没有在列表中选择任何项目。检查所选项目,

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

MessageBox.Show(msg);