R
Ryan McFall
Hi:
I am trying to write a short program that demonstrates switching between
two different event handlers when a mouse click occurs. Here's the
relevant code:
public delegate void MouseHandler (object sender, MouseEventArgs args);
....
private void swap(MouseHandler old, MouseHandler new) {
simpleOpenGlControl1.MouseClick -= new MouseEventHandler (old);
simpleOpenGlControl1.MouseClick += new MouseEventHandler(new);
}
private void control_MouseClick(object sender, MouseEventArgs e) {
Console.WriteLine("Original Mouse Click");
swap(control_MouseClick, control_MouseClick2);
/*
control.MouseClick -= new MouseEventHandler(control_MouseClick);
control.MouseClick += new MouseEventHandler(control_MouseClick2);
*/
}
private void control_MouseClick2(object sender, MouseEventArgs e) {
Console.WriteLine("Modified Mouse Click");
swap(control_MouseClick2, control_MouseClick);
/*
control.MouseClick -= new MouseEventHandler(control_MouseClick2);
control.MouseClick += new MouseEventHandler(control_MouseClick);
*/
}
When I use the commented code in control_MouseClick and
control_MouseClick2, things work as expected; each new mouse click
prints a different message. But when I use the swap function, it seems
that removing the old mouse handler isn't working.
I'm fairly new to C#, so it's highly probable I'm misunderstanding
something fundamental here. Any insights would be greatly appreciated!
Thanks,
Ryan McFall
I am trying to write a short program that demonstrates switching between
two different event handlers when a mouse click occurs. Here's the
relevant code:
public delegate void MouseHandler (object sender, MouseEventArgs args);
....
private void swap(MouseHandler old, MouseHandler new) {
simpleOpenGlControl1.MouseClick -= new MouseEventHandler (old);
simpleOpenGlControl1.MouseClick += new MouseEventHandler(new);
}
private void control_MouseClick(object sender, MouseEventArgs e) {
Console.WriteLine("Original Mouse Click");
swap(control_MouseClick, control_MouseClick2);
/*
control.MouseClick -= new MouseEventHandler(control_MouseClick);
control.MouseClick += new MouseEventHandler(control_MouseClick2);
*/
}
private void control_MouseClick2(object sender, MouseEventArgs e) {
Console.WriteLine("Modified Mouse Click");
swap(control_MouseClick2, control_MouseClick);
/*
control.MouseClick -= new MouseEventHandler(control_MouseClick2);
control.MouseClick += new MouseEventHandler(control_MouseClick);
*/
}
When I use the commented code in control_MouseClick and
control_MouseClick2, things work as expected; each new mouse click
prints a different message. But when I use the swap function, it seems
that removing the old mouse handler isn't working.
I'm fairly new to C#, so it's highly probable I'm misunderstanding
something fundamental here. Any insights would be greatly appreciated!
Thanks,
Ryan McFall