Функция события клика неожиданно вызывалась несколько раз по какой-то неизвестной причине.

Ниже приведено событие щелчка для списка 3. Проблема в том, что если я не включу listbox3.Visible=false в обработчик событий listbox3.click, он будет работать нормально. Но если я включу его в код, он отлично работает для первого выбора из lisbox3, но для дальнейшего выбора он вызывается несколько раз. Я попытался изменить позицию оператора listbox3.visible=false, но он продолжает показывать такое же поведение. если я добавлю listBox3.Click -= new EventHandler(listBox3_Click); в конце lisbox3.click(), тогда все работает нормально. Но все же я не могу понять причину многократного вызова обработчика события клика. Пожалуйста помоги

private void Heading_or_project_Click(object sender, EventArgs e)
{
    listBox3.Visible = true;
    listBox3.Click += new EventHandler(listBox3_Click);
}

public void listBox3_Click(object sender, EventArgs e)
{

        listBox3.Visible = false;
        int i = listBox3.SelectedIndex;
        switch (i)
        {
            case 0: button1_Click(sender, e);
                break;
            case 1: new_heading_just_created = 1;
                    Heading next_heading = new Heading();
                    next_heading.per_topic_button.TabIndex = heading_wise.Count;
                    next_heading.per_topic_button.Click += new EventHandler(per_topic_button_Click);


                    flowLayoutPanel2.Controls.Add(next_heading.head);

                    heading_wise.Add(next_heading);
                break;

            default:
                break;
        }

person Community    schedule 19.05.2015    source источник


Ответы (1)


Проблема в этих строках:

next_heading.per_topic_button.Click += new EventHandler(per_topic_button_Click);

И

listBox3.Click += new EventHandler(listBox3_Click);

Вы должны вызывать его из события формы Load, а не здесь. Потому что каждый раз, когда вы вызываете эти методы (listBox3_Click или Heading_or_project_Click), вы снова добавляете один и тот же обработчик, поэтому он выполняется несколько раз.

person Aly Elhaddad    schedule 19.05.2015