У меня есть ListView
с прикрепленным к нему ItemActivate
. Обычно я бы просто использовал listview.SelectedItems[0]
, чтобы получить ListViewItem
, вызвавший событие.
Теперь я хочу подписаться и на SelectedIndexChanged
, чтобы элементы могли активироваться, как только они будут выбраны.
К сожалению, sender
и e
обоих этих событий не возвращают элемент, вызвавший событие (насколько мне известно!).
Обходным путем было бы иметь поле типа lvSelectedItem
и хранить в нем активный элемент... но как я могу сделать это лучше? Каким-то образом я могу получить выбранный элемент непосредственно от отправителя или eventargs?
Вот мой код:
private void lvPins_ItemActivate(object sender, EventArgs e)
{
var item = lvPins.SelectedItems[0];
var pin = item.Tag as Pin;
OnPinActivated(pin);
}
private void lvPins_SelectedIndexChanged(object sender, System.EventArgs e)
{
var item = lvPins.SelectedItems[0]; //this always cause argumentoutofrange exceotion
var pin = item.Tag as Pin;
OnPinActivated(pin);
}