public void EnterLeaveFocusEventTest () { if (TestHelper.RunningOnUnix) { Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE"); } Form f = new Form(); f.ShowInTaskbar = false; f.Name = "Form1"; ContainerControl cc0 = new ContainerControl(); cc0.Name = "ContainerControl 0"; ContainerControl cc1 = new ContainerControl(); cc1.Name = "ContainerControl 1"; ContainerControl cc2 = new ContainerControl(); cc2.Name = "ContainerControl 2"; Control c1 = new Control(); c1.Name = "Control 1"; Control c2 = new Control(); c2.Name = "Control 2"; connect(f); connect(cc0); connect(cc1); connect(cc2); connect(c1); connect(c2); cc0.Controls.Add(cc1); cc0.Controls.Add(cc2); cc1.Controls.Add(c1); cc2.Controls.Add(c2); f.Controls.Add(cc0); sb = new StringBuilder (); f.Show (); c1.Select(); Assert.AreEqual (@"OnEnter: ContainerControl 0 System.Windows.Forms.ContainerControl OnEnter: ContainerControl 1 System.Windows.Forms.ContainerControl OnEnter: Control 1 System.Windows.Forms.Control OnGotFocus: Control 1 System.Windows.Forms.Control ", sb.ToString (), "1"); sb.Length = 0; c2.Select(); Assert.AreEqual (@"OnLeave: Control 1 System.Windows.Forms.Control OnLeave: ContainerControl 1 System.Windows.Forms.ContainerControl OnValidating: Control 1 System.Windows.Forms.Control OnValidated: Control 1 System.Windows.Forms.Control OnValidating: ContainerControl 1 System.Windows.Forms.ContainerControl OnValidated: ContainerControl 1 System.Windows.Forms.ContainerControl OnEnter: ContainerControl 2 System.Windows.Forms.ContainerControl OnEnter: Control 2 System.Windows.Forms.Control OnLostFocus: Control 1 System.Windows.Forms.Control OnGotFocus: Control 2 System.Windows.Forms.Control ", sb.ToString (), "2"); sb.Length = 0; cc1.Select(); Assert.AreEqual (@"OnLeave: Control 2 System.Windows.Forms.Control OnLeave: ContainerControl 2 System.Windows.Forms.ContainerControl OnValidating: Control 2 System.Windows.Forms.Control OnValidated: Control 2 System.Windows.Forms.Control OnValidating: ContainerControl 2 System.Windows.Forms.ContainerControl OnValidated: ContainerControl 2 System.Windows.Forms.ContainerControl OnEnter: ContainerControl 1 System.Windows.Forms.ContainerControl OnLostFocus: Control 2 System.Windows.Forms.Control OnGotFocus: ContainerControl 1 System.Windows.Forms.ContainerControl ", sb.ToString (), "3"); sb.Length = 0; cc2.Select(); Assert.AreEqual (@"OnLeave: ContainerControl 1 System.Windows.Forms.ContainerControl OnValidating: ContainerControl 1 System.Windows.Forms.ContainerControl OnValidated: ContainerControl 1 System.Windows.Forms.ContainerControl OnEnter: ContainerControl 2 System.Windows.Forms.ContainerControl OnLostFocus: ContainerControl 1 System.Windows.Forms.ContainerControl OnGotFocus: ContainerControl 2 System.Windows.Forms.ContainerControl ", sb.ToString (), "4"); Assert.IsNull (cc2.ActiveControl, "5"); sb.Length = 0; c2.Select(); Assert.AreEqual (@"OnEnter: Control 2 System.Windows.Forms.Control OnLostFocus: ContainerControl 2 System.Windows.Forms.ContainerControl OnGotFocus: Control 2 System.Windows.Forms.Control ", sb.ToString (), "6"); sb.Length = 0; cc1.Select(); Assert.AreEqual (@"OnLeave: Control 2 System.Windows.Forms.Control OnLeave: ContainerControl 2 System.Windows.Forms.ContainerControl OnValidating: Control 2 System.Windows.Forms.Control OnValidated: Control 2 System.Windows.Forms.Control OnValidating: ContainerControl 2 System.Windows.Forms.ContainerControl OnValidated: ContainerControl 2 System.Windows.Forms.ContainerControl OnEnter: ContainerControl 1 System.Windows.Forms.ContainerControl OnLostFocus: Control 2 System.Windows.Forms.Control OnGotFocus: ContainerControl 1 System.Windows.Forms.ContainerControl ", sb.ToString (), "7"); sb.Length = 0; f.Select(); Assert.AreEqual ("", sb.ToString (), "8"); f.Dispose (); }