下面是列表框3的click事件。问题是,如果我在listbox3.Visible=false
事件处理程序中不包含listbox3.click
,它就可以正常工作。但是,如果我将其包含在代码中,则对于从lisbox3
进行的第一次选择来说,它工作正常,但对于进一步的选择,它会被多次调用。我试图更改listbox3.visible=false
语句的位置,但是它始终显示相同的行为。如果我加上
listBox3.Click-=新的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;
}
最佳答案
问题是这些行:
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
)时,您都会再次添加相同的处理程序,因此它会多次执行。