-1

目標:リストビューでラベルが変更/編集されたときに辞書を更新しようとしています

問題: 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");
            }
        }
4

1 に答える 1

4

イベントは、型のAfterLabelEditEventオブジェクトをLabelEditEventArgsパラメーターとしてハンドラー メソッドに渡します。このパラメータの名前はe; イベント ハンドラー メソッドのシグネチャの一部として既に表示されています。

からアクセスできるこのクラスのプロパティの 1 つはです。これ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");
    }
}
于 2013-03-19T17:56:07.460 に答える