如何从AfterLabelEdit事件中获取listviewItem/row ?

本文关键字:listviewItem row 获取 AfterLabelEdit 事件 | 更新日期: 2023-09-27 18:04:38

目标:当标签在我的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");
            }
        }

如何从AfterLabelEdit事件中获取listviewItem/row ?

AfterLabelEditEvent事件将LabelEditEventArgs类型的对象作为参数传递给处理程序方法。该参数命名为e;您已经将其显示为事件处理程序方法签名的一部分。

这个类的一个属性是Item,可以通过e访问,它返回正在编辑的ListViewItem的从零开始的索引。

一旦你有了这个从零开始的索引,你可以使用它从你的ListView控件的Items属性中检索适当的项:

// Retrieve the item that is being edited.
ListViewItem item = myListView.Items[e.Item];

一旦你有了正确的ListViewItem,你就可以查询它的属性。我认为你所说的"key"是指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");
    }
}