У меня есть System.Windows.Forms.ListView
объявленный private System.Windows.Forms.ListView listViewContent
в классе дизайнера.
Я пытаюсь изменить некоторые свойства из ListViewItem
:
ListViewItem.Text
ListViewItem.Tooltip
Элемент, который я пытаюсь отредактировать, является частью ListViewItemCollection
(ListView.Items
).
Вот моя первая попытка изменить эти свойства:
int index = listViewContent.SelectedIndices[0];
listViewContent.Items[index].Text = "Toto1";
listViewContent.Items[index].ToolTipText = "Toto2";
Значения Text и ToolTipText остаются неизменными после выполнения кода ниже .
![After](https://i.stack.imgur.com/lgSQ4.png)
Из-за неизменности этих значений я подозревал, что свойства доступны только для чтения, а это не так:
//
// Summary:
// Gets or sets the text of the item.
//
// Returns:
// The text to display for the item. This should not exceed 259 characters.
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Localizable(true)]
[SRCategoryAttribute("CatAppearance")]
public string Text { get; set; }
//
// Summary:
// Gets or sets the text shown when the mouse pointer rests on the System.Windows.Forms.ListViewItem.
//
// Returns:
// The text shown when the mouse pointer rests on the System.Windows.Forms.ListViewItem.
[DefaultValue("")]
[SRCategoryAttribute("CatAppearance")]
public string ToolTipText { get; set; }
Я также попробовал этот подход:
int index = listViewContent.SelectedIndices[0];
ListViewItem item = listViewContent.Items[index];
item.Text = "Toto1";
item.ToolTipText = "Toto2";
При втором подходе я вижу, что изменения, примененные к item
, действуют :
![Second approach](https://i.stack.imgur.com/6c2Ze.png)
Но Я не нашел способа применить эти модификации к предмету в коллекции . Я попробовал:
int index = listViewContent.SelectedIndices[0];
ListViewItem item = listViewContent.Items[index];
item.Text = "Toto1";
item.ToolTipText = "Toto2";
listViewContent.Items[index] = item; // <------ What I tried
Но исключение выдается на listViewContent.Items[index] = item;
:
![System.InvalidOperationException:Cannot modify the items collection in a virtual ListView.](https://i.stack.imgur.com/Pqe4V.png)
Я предполагаю, что ListView находится в определенном состоянии (Virtual ListView), что не позволяет мне изменять его элементы .
Но тогда почему ListViewItem.BeginEdit()
может редактировать свойство Text элемента?
Я знаю, что для ListViewItem.BeginEdit()
требуется установить listViewContent.LabelEdit
на true
(я пытался установить для этого свойства значение true в моем первом и втором подходе, но это не имело никакого эффекта).
Мой вопрос:
Я что-то упустил в процессе редактирования свойства ListViewItem
?