C#如何从AfterLabelEdit事件中获取listviewItem /行?

时间:2013-03-19 17:45:56

标签: c# listview event-handling

目标:我正在尝试在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");
            }
        }

1 个答案:

答案 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");
    }
}