rendered paste bodyusing System;
using System.Windows.Forms;
class MyRedirecter : Control {
Control dst;
public MyRedirecter (string s, Control dst) {
this.Name = s;
this.dst = dst;
}
protected override void OnEnter (EventArgs e) {
Console.WriteLine ("redirecter {0} entered", Name);
//Console.WriteLine (Environment.StackTrace);
base.OnEnter (e);
dst.Focus();
}
protected override void OnLeave (EventArgs e) {
Console.WriteLine ("redirecter {0} left", Name);
base.OnLeave (e);
}
}
class MyControl : Control {
public MyControl (string s) { this.Name = s; }
protected override void OnEnter (EventArgs e) {
Console.WriteLine ("{0} entered", Name);
//Console.WriteLine (Environment.StackTrace);
base.OnEnter (e);
}
protected override void OnLeave (EventArgs e) {
Console.WriteLine ("{0} left", Name);
base.OnLeave (e);
}
}
// r1 ....+
// / \ |
// c2 c1 |
// ^ \ v
// +........r2
class Test : Form {
public Test ()
{
Control c1 = new MyControl ("c1");
Control c2 = new MyControl ("c2");
MyRedirecter r2 = new MyRedirecter ("r2", c2);
MyRedirecter r1 = new MyRedirecter ("r1", r2);
Controls.Add (r1);
r1.Controls.Add (c1);
c1.Controls.Add (r2);
Controls.Add (c2);
}
public static void Main (string[] args) {
Application.Run (new Test());
}
}