目标:我正在尝试在Listview上更改/编辑标签时更新词典
问题:我不知道如何从触发AfterLabelEdit的行中检索行/ ListViewItem
我的班级正在订阅活动
myListView.AfterLabelEdit +=new LabelEditEventHandler(myListView_AfterLabelEdit);
我正在使用函数
来处理事件 private void myListView_AfterLabelEdit(object sender, LabelEditEventArgs e )
{
MessageBox.Show("You Renamed Me to: "+e.Label.ToString());
if (deviceDictionary.ContainsKey(***)) <--I need to retreive this row that was edited
{
MessageBox.Show("Entry updated");
}
}
答案 0 :(得分:4)
AfterLabelEditEvent
事件将类型为LabelEditEventArgs
的对象作为参数传递给处理程序方法。此参数名为e
;您已将其显示为事件处理程序方法签名的一部分。
此类的一个属性(可通过e
访问)为Item
,它返回正在编辑的ListViewItem
的从零开始的索引。
获得此基于零的索引后,您可以使用该索引从ListView
控件的Items
属性中检索相应的项目:
// Retrieve the item that is being edited.
ListViewItem item = myListView.Items[e.Item];
一旦你有了正确的ListViewItem
,就可以查询其属性。我认为你的意思是“密钥”被公开为Name
属性。
private void myListView_AfterLabelEdit(object sender, LabelEditEventArgs e)
{
MessageBox.Show("You Renamed Me to: " + e.Label.ToString());
if (deviceDictionary.ContainsKey(myListView.Items[e.Item].Name))
{
MessageBox.Show("Entry updated");
}
}