элемент двойного щелчка в списке view С#

57
6

я все еще не могу понять, как сделать элемент в 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, и я пробовал это. im добавление 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".

Пожалуйста, помогите мне с этим.

спросил(а) 2012-08-10T07:44:00+04:00 8 лет, 1 месяц назад
1
Решение
107

На 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-10T07:53:00+04:00 8 лет, 1 месяц назад
58

Вы на самом деле не выбрали элемент, и, когда вы получите сообщение об ошибке:

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

ответил(а) 2012-08-10T07:55:00+04:00 8 лет, 1 месяц назад
41

Вы уверены, что есть активный элемент? Возможно, потому, что вы не выбрали ни одного элемента в списке. Выполните проверку выбранных элементов,

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

MessageBox.Show(msg);

ответил(а) 2012-08-10T07:48:00+04:00 8 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема