我在设计器类中有一个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";
执行下面的代码后,文本和ToolTipText的值保持不变。
由于未修改这些值,因此我怀疑这些属性是只读的,不是:
//
// 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
上进行的修改是有效的:
但是我找不到将这些修改应用于集合中项目的方法。我尝试过:
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;
上抛出了异常:
我的猜测是 ListView处于特定状态(虚拟ListView),这阻止了我修改其项。
但是,为什么ListViewItem.BeginEdit()
可以编辑项目的Text属性?
我知道ListViewItem.BeginEdit()
要求将listViewContent.LabelEdit
设置为true
(我在第一种和第二种方法中都尝试将此属性设置为true,但没有效果)。
我的问题是:
在ListViewItem
属性编辑过程中是否缺少某些内容?