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()添加新创建listviewitemlistView1

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 回答