ListView гадит событиями

Antonariy
Дата: 02.06.2014 17:43:58
Листвью заполняется в цикле при создании формы и подписан на событие:
    Private Sub lvPrices_ItemChecked(sender As Object, e As ItemCheckedEventArgs) Handles lvPrices.ItemChecked
        ....
    End Sub
Проблема в том, что при заполнении нужным айтемам выставляется свойство Checked, а ItemChecked начинает лупить по добавленным айтемам не во время прохода цикла, а после отображения листвью. То есть флажок перед циклом ставить без толку.

Как побороть?
pation
Дата: 05.06.2014 11:56:40
Antonariy
Как побороть?

после каждой итеррации
Application.DoEvents();
Где-то в степи
Дата: 05.06.2014 13:48:16
Antonariy,
Имхо, наверное подписаться на событие после заполнения состояния вью листа
Antonariy
Дата: 05.06.2014 17:17:35
pation,

это не имеет смысла, поскольку листвью еще не виден, а события вываливаются после отображения.

Где-то в степи
Antonariy,
Имхо, наверное подписаться на событие после заполнения состояния вью листа
такое событие есть?
я подписался в VisibleChanged, но оно срабатывает два раза, так что пришлось еще флажок прикостылить, чтобы не подписаться дважды.
Где-то в степи
Дата: 05.06.2014 18:12:50
Antonariy,
честно сказать, я не могу понять суть проблемы
я посчитал что
  void LoadSubscribe(IEnumerable<object> enumerator, ItemCheckedEventHandler action)
        {
            listView1.Visible = false;
            listView1.CheckBoxes = true;
            //if (action != null)//1  ВАРИАНТ КАК У ВАС
            //{
            //    listView1.ItemChecked += action;
            //}
            foreach (var v in from object v in (IEnumerable)enumerator let item = new ListViewItem(v.ToString()) { Checked = true } select v)
                listView1.Items.Add(new ListViewItem(v.ToString()) { Checked = true });
            if (action != null)// ПРЕДЛАГАЮ Я
            {
                listView1.ItemChecked += action;
            }
            listView1.Visible = true;
        }

  LoadSubscribe(Enumerable.Range(1,20).Cast<object>(),(o, args) => { MessageBox.Show("sd"); }); // вызов

я не могу понять, откуда валятся события при Visible , ведь можно подписаться в самом конце, после объявления Visible
Antonariy
Дата: 05.06.2014 23:10:28
я пробовал оба варианта, события приходят. они не приходят только если подписаться после отображения listview.