2007-04-23 Chris Toshok <toshok@ximian.com>
[mono-project/dkf.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / FocusTest.cs
blobd48d8c611cdff4a05ae6354a31b0b0a77aed2801
1 //
2 // Copyright (c) 2006 Novell, Inc.
3 //
4 // Authors:
5 // Jackson Harper (jackson@ximian.com)
6 //
8 using System;
9 using System.Text;
10 using System.Windows.Forms;
12 using CancelEventArgs = System.ComponentModel.CancelEventArgs;
13 using CancelEventHandler = System.ComponentModel.CancelEventHandler;
15 using NUnit.Framework;
17 namespace MonoTests.System.Windows.Forms {
19 [TestFixture]
20 public class FocusTest {
22 public class ControlPoker : Button {
24 internal bool directed_select_called;
26 public ControlPoker ()
30 public ControlPoker (string text)
32 Text = text;
35 public void _Select (bool directed, bool forward)
37 Select (directed, forward);
40 protected override void Select (bool directed, bool forward)
42 directed_select_called = true;
43 base.Select (directed, forward);
48 private ControlPoker [] flat_controls;
50 public class ContainerPoker : ContainerControl {
52 public ContainerPoker (string s)
54 Text = s;
57 public void _Select (bool directed, bool forward)
59 Select (directed, forward);
62 public override string ToString ()
64 return String.Concat (GetType (), " ", Text);
68 public class GroupBoxPoker: GroupBox {
70 public GroupBoxPoker (string s)
72 Text = s;
75 public void _Select (bool directed, bool forward)
77 Select (directed, forward);
80 public override string ToString ()
82 return String.Concat (GetType (), " ", Text);
86 [SetUp]
87 protected virtual void SetUp ()
89 flat_controls = null;
91 flat_controls = new ControlPoker [] {
92 new ControlPoker (), new ControlPoker (), new ControlPoker ()
95 for (int i = 0; i < flat_controls.Length; i++)
96 flat_controls [i].Text = i.ToString ();
99 [Test]
100 public void ControlSelectNextFlatTest ()
102 if (TestHelper.RunningOnUnix) {
103 Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
106 Form form = new Form ();
107 form.ShowInTaskbar = false;
109 form.Controls.AddRange (flat_controls);
110 form.Show ();
112 Assert.IsTrue (flat_controls [0].Focused, "sanity-1");
113 Assert.AreEqual (flat_controls [0], form.ActiveControl, "sanity-2");
115 form.SelectNextControl (flat_controls [0], true, false, false, false);
116 Assert.IsFalse (flat_controls [0].Focused, "A1");
117 Assert.IsTrue (flat_controls [1].Focused, "A2");
118 Assert.IsFalse (flat_controls [2].Focused, "A3");
119 Assert.AreEqual (flat_controls [1], form.ActiveControl, "A4");
121 form.SelectNextControl (flat_controls [1], true, false, false, false);
122 Assert.IsFalse (flat_controls [0].Focused, "A5");
123 Assert.IsFalse (flat_controls [1].Focused, "A6");
124 Assert.IsTrue (flat_controls [2].Focused, "A7");
125 Assert.AreEqual (flat_controls [2], form.ActiveControl, "A8");
127 // Can't select anymore because we aren't wrapping
128 form.SelectNextControl (flat_controls [2], true, false, false, false);
129 Assert.IsFalse (flat_controls [0].Focused, "A9");
130 Assert.IsFalse (flat_controls [1].Focused, "A10");
131 Assert.IsTrue (flat_controls [2].Focused, "A11");
132 Assert.AreEqual (flat_controls [2], form.ActiveControl, "A12");
134 form.SelectNextControl (flat_controls [2], true, false, false, true);
135 Assert.IsTrue (flat_controls [0].Focused, "A13");
136 Assert.IsFalse (flat_controls [1].Focused, "A14");
137 Assert.IsFalse (flat_controls [2].Focused, "A15");
138 Assert.AreEqual (flat_controls [0], form.ActiveControl, "A16");
139 form.Dispose ();
142 [Test]
143 public void SelectNextControlNullTest ()
145 Form form = new Form ();
146 form.ShowInTaskbar = false;
148 form.Show ();
149 form.Controls.AddRange (flat_controls);
151 form.SelectNextControl (null, true, false, false, false);
152 Assert.IsTrue (flat_controls [0].Focused, "A1");
153 Assert.IsFalse (flat_controls [1].Focused, "A2");
154 Assert.IsFalse (flat_controls [2].Focused, "A3");
155 Assert.AreEqual (flat_controls [0], form.ActiveControl, "A4");
157 form.SelectNextControl (null, true, false, false, false);
158 Assert.IsTrue (flat_controls [0].Focused, "A5");
159 Assert.IsFalse (flat_controls [1].Focused, "A6");
160 Assert.IsFalse (flat_controls [2].Focused, "A7");
161 Assert.AreEqual (flat_controls [0], form.ActiveControl, "A8");
162 form.Dispose ();
165 [Test]
166 public void SelectControlTest ()
168 Form form = new Form ();
169 form.ShowInTaskbar = false;
171 form.Show ();
172 form.Controls.AddRange (flat_controls);
174 flat_controls [0]._Select (false, false);
175 Assert.AreEqual (flat_controls [0], form.ActiveControl, "A1");
177 flat_controls [0]._Select (true, false);
178 Assert.AreEqual (flat_controls [0], form.ActiveControl, "A2");
180 flat_controls [0]._Select (true, true);
181 Assert.AreEqual (flat_controls [0], form.ActiveControl, "A3");
182 form.Dispose ();
185 [Test]
186 public void EnsureDirectedSelectUsed ()
188 Form form = new Form ();
189 form.ShowInTaskbar = false;
191 form.Show ();
192 form.Controls.AddRange (flat_controls);
194 form.SelectNextControl (null, true, false, false, false);
195 Assert.IsTrue (flat_controls [0].directed_select_called, "A1");
196 form.Dispose ();
199 [Test]
200 public void ContainerSelectDirectedForward ()
202 Form form = new Form ();
203 form.ShowInTaskbar = false;
204 ContainerPoker cp = new ContainerPoker ("container-a");
206 form.Show ();
207 form.Controls.Add (cp);
209 cp.Controls.AddRange (flat_controls);
211 cp._Select (true, true);
212 Assert.IsTrue (flat_controls [0].Focused, "A1");
213 Assert.IsFalse (flat_controls [1].Focused, "A2");
214 Assert.IsFalse (flat_controls [2].Focused, "A3");
215 Assert.AreEqual (flat_controls [0], cp.ActiveControl, "A4");
216 Assert.AreEqual (cp, form.ActiveControl, "A5");
218 // Should select the first one again
219 cp._Select (true, true);
220 Assert.IsTrue (flat_controls [0].Focused, "A6");
221 Assert.IsFalse (flat_controls [1].Focused, "A7");
222 Assert.IsFalse (flat_controls [2].Focused, "A8");
223 Assert.AreEqual (flat_controls [0], cp.ActiveControl, "A9");
224 Assert.AreEqual (cp, form.ActiveControl, "A10");
225 form.Dispose ();
228 [Test]
229 public void ContainerSelectDirectedBackward ()
231 Form form = new Form ();
232 form.ShowInTaskbar = false;
233 ContainerPoker cp = new ContainerPoker ("container-a");
235 form.Show ();
236 form.Controls.Add (cp);
238 cp.Controls.AddRange (flat_controls);
240 cp._Select (true, false);
241 Assert.IsFalse (flat_controls [0].Focused, "A1");
242 Assert.IsFalse (flat_controls [1].Focused, "A2");
243 Assert.IsTrue (flat_controls [2].Focused, "A3");
244 Assert.AreEqual (flat_controls [2], cp.ActiveControl, "A4");
245 Assert.AreEqual (cp, form.ActiveControl, "A5");
247 // Should select the first one again
248 cp._Select (true, false);
249 Assert.IsFalse (flat_controls [0].Focused, "A6");
250 Assert.IsFalse (flat_controls [1].Focused, "A7");
251 Assert.IsTrue (flat_controls [2].Focused, "A8");
252 Assert.AreEqual (flat_controls [2], cp.ActiveControl, "A9");
253 Assert.AreEqual (cp, form.ActiveControl, "A10");
254 form.Dispose ();
257 [Test]
258 [Category ("NotWorking")]
259 public void ContainerSelectUndirectedForward ()
261 Form form = new Form ();
262 form.ShowInTaskbar = false;
263 ContainerPoker cp = new ContainerPoker ("container-a");
265 form.Show ();
266 form.Controls.Add (cp);
268 cp.Controls.AddRange (flat_controls);
270 Assert.IsFalse (flat_controls [0].Focused, "A0");
271 cp._Select (false, true);
272 Assert.IsFalse (flat_controls [0].Focused, "A1");
273 Assert.IsFalse (flat_controls [1].Focused, "A2");
274 Assert.IsFalse (flat_controls [2].Focused, "A3");
275 Assert.AreEqual (null, cp.ActiveControl, "A4");
276 Assert.AreEqual (cp, form.ActiveControl, "A5");
277 form.Dispose ();
280 [Test]
281 public void GetNextControlFromForm ()
283 Form form = new Form ();
284 form.ShowInTaskbar = false;
285 ContainerPoker con_a = new ContainerPoker ("container-a");
286 ContainerPoker con_b = new ContainerPoker ("container-b");
287 ContainerPoker con_c = new ContainerPoker ("container-c");
288 ControlPoker [] ctrls_a = new ControlPoker [] {
289 new ControlPoker (), new ControlPoker (), new ControlPoker ()
291 ControlPoker [] ctrls_b = new ControlPoker [] {
292 new ControlPoker (), new ControlPoker (), new ControlPoker ()
294 ControlPoker [] ctrls_c = new ControlPoker [] {
295 new ControlPoker (), new ControlPoker (), new ControlPoker ()
298 con_a.Controls.AddRange (ctrls_a);
299 con_b.Controls.AddRange (ctrls_b);
300 con_c.Controls.AddRange (ctrls_c);
302 form.Controls.Add (con_a);
303 form.Controls.Add (con_b);
304 form.Controls.Add (con_c);
306 form.Show ();
308 // top level movement,
309 Assert.AreEqual (form.GetNextControl (null, true), con_a, "null-1");
310 Assert.AreEqual (form.GetNextControl (null, false), con_c, "null-2");
312 Assert.AreEqual (form.GetNextControl (form, true), con_a, "form-1");
313 Assert.AreEqual (form.GetNextControl (form, false), con_c, "form-2");
315 Assert.AreEqual (form.GetNextControl (con_a, true), con_b, "container-1");
316 Assert.AreEqual (form.GetNextControl (con_a, false), null, "container-2");
317 Assert.AreEqual (form.GetNextControl (con_b, true), con_c, "container-3");
318 Assert.AreEqual (form.GetNextControl (con_b, false), con_a, "container-4");
319 Assert.AreEqual (form.GetNextControl (con_c, true), null, "container-5");
320 Assert.AreEqual (form.GetNextControl (con_c, false), con_b, "container-6");
322 Assert.AreEqual (form.GetNextControl (ctrls_a [0], true), ctrls_a [1], "ctrls-a-1");
323 Assert.AreEqual (form.GetNextControl (ctrls_a [0], false), con_a, "ctrls-a-2");
324 Assert.AreEqual (form.GetNextControl (ctrls_a [1], true), ctrls_a [2], "ctrls-a-3");
325 Assert.AreEqual (form.GetNextControl (ctrls_a [1], false), ctrls_a [0], "ctrls-a-4");
326 Assert.AreEqual (form.GetNextControl (ctrls_a [2], true), con_b, "ctrls-a-5");
327 Assert.AreEqual (form.GetNextControl (ctrls_a [2], false), ctrls_a [1], "ctrls-a-6");
329 Assert.AreEqual (form.GetNextControl (ctrls_b [0], true), ctrls_b [1], "ctrls-b-1");
330 Assert.AreEqual (form.GetNextControl (ctrls_b [0], false), con_b, "ctrls-b-2");
331 Assert.AreEqual (form.GetNextControl (ctrls_b [1], true), ctrls_b [2], "ctrls-b-3");
332 Assert.AreEqual (form.GetNextControl (ctrls_b [1], false), ctrls_b [0], "ctrls-b-4");
333 Assert.AreEqual (form.GetNextControl (ctrls_b [2], true), con_c, "ctrls-b-5");
334 Assert.AreEqual (form.GetNextControl (ctrls_b [2], false), ctrls_b [1], "ctrls-b-6");
336 Assert.AreEqual (form.GetNextControl (ctrls_c [0], true), ctrls_c [1], "ctrls-c-1");
337 Assert.AreEqual (form.GetNextControl (ctrls_c [0], false), con_c, "ctrls-c-2");
338 Assert.AreEqual (form.GetNextControl (ctrls_c [1], true), ctrls_c [2], "ctrls-c-3");
339 Assert.AreEqual (form.GetNextControl (ctrls_c [1], false), ctrls_c [0], "ctrls-c-4");
340 Assert.AreEqual (form.GetNextControl (ctrls_c [2], true), null, "ctrls-c-5");
341 Assert.AreEqual (form.GetNextControl (ctrls_c [2], false), ctrls_c [1], "ctrls-c-6");
342 form.Dispose ();
345 [Test]
346 public void GetNextControlFromContainerA ()
348 Form form = new Form ();
349 form.ShowInTaskbar = false;
350 ContainerPoker con_a = new ContainerPoker ("container-a");
351 ContainerPoker con_b = new ContainerPoker ("container-b");
352 ContainerPoker con_c = new ContainerPoker ("container-c");
353 ControlPoker [] ctrls_a = new ControlPoker [] {
354 new ControlPoker ("ctrls-a-0"), new ControlPoker ("ctrls-a-1"), new ControlPoker ("ctrls-a-2")
356 ControlPoker [] ctrls_b = new ControlPoker [] {
357 new ControlPoker ("ctrls-b-0"), new ControlPoker ("ctrls-b-1"), new ControlPoker ("ctrls-b-2")
359 ControlPoker [] ctrls_c = new ControlPoker [] {
360 new ControlPoker ("ctrls-c-0"), new ControlPoker ("ctrls-c-1"), new ControlPoker ("ctrls-c-2")
363 con_a.Controls.AddRange (ctrls_a);
364 con_b.Controls.AddRange (ctrls_b);
365 con_c.Controls.AddRange (ctrls_c);
367 form.Controls.Add (con_a);
368 form.Controls.Add (con_b);
369 form.Controls.Add (con_c);
371 form.Show ();
373 // top level movement,
374 Assert.AreEqual (con_a.GetNextControl (null, true), ctrls_a [0], "null-1");
375 Assert.AreEqual (con_a.GetNextControl (null, false), ctrls_a [2], "null-2");
377 Assert.AreEqual (con_a.GetNextControl (form, true), ctrls_a [0], "form-1");
378 Assert.AreEqual (con_a.GetNextControl (form, false), ctrls_a [2], "form-2");
380 Assert.AreEqual (con_a.GetNextControl (con_a, true), ctrls_a [0], "container-1");
381 Assert.AreEqual (con_a.GetNextControl (con_a, false), ctrls_a [2], "container-2");
382 Assert.AreEqual (con_a.GetNextControl (con_b, true), ctrls_a [0], "container-3");
383 Assert.AreEqual (con_a.GetNextControl (con_b, false), ctrls_a [2], "container-4");
384 Assert.AreEqual (con_a.GetNextControl (con_c, true), ctrls_a [0], "container-5");
385 Assert.AreEqual (con_a.GetNextControl (con_c, false), ctrls_a [2], "container-6");
387 Assert.AreEqual (con_a.GetNextControl (ctrls_a [0], true), ctrls_a [1], "ctrls-a-1");
388 Assert.AreEqual (con_a.GetNextControl (ctrls_a [0], false), null, "ctrls-a-2");
389 Assert.AreEqual (con_a.GetNextControl (ctrls_a [1], true), ctrls_a [2], "ctrls-a-3");
390 Assert.AreEqual (con_a.GetNextControl (ctrls_a [1], false), ctrls_a [0], "ctrls-a-4");
391 Assert.AreEqual (con_a.GetNextControl (ctrls_a [2], true), null, "ctrls-a-5");
392 Assert.AreEqual (con_a.GetNextControl (ctrls_a [2], false), ctrls_a [1], "ctrls-a-6");
394 Assert.AreEqual (con_a.GetNextControl (ctrls_b [0], true), ctrls_a [0], "ctrls-b-1");
395 Assert.AreEqual (con_a.GetNextControl (ctrls_b [0], false), ctrls_a [2], "ctrls-b-2");
396 Assert.AreEqual (con_a.GetNextControl (ctrls_b [1], true), ctrls_a [0], "ctrls-b-3");
397 Assert.AreEqual (con_a.GetNextControl (ctrls_b [1], false), ctrls_a [2], "ctrls-b-4");
398 Assert.AreEqual (con_a.GetNextControl (ctrls_b [2], true), ctrls_a [0], "ctrls-b-5");
399 Assert.AreEqual (con_a.GetNextControl (ctrls_b [2], false), ctrls_a [2], "ctrls-b-6");
401 Assert.AreEqual (con_a.GetNextControl (ctrls_c [0], true), ctrls_a [0], "ctrls-c-1");
402 Assert.AreEqual (con_a.GetNextControl (ctrls_c [0], false), ctrls_a [2], "ctrls-c-2");
403 Assert.AreEqual (con_a.GetNextControl (ctrls_c [1], true), ctrls_a [0], "ctrls-c-3");
404 Assert.AreEqual (con_a.GetNextControl (ctrls_c [1], false), ctrls_a [2], "ctrls-c-4");
405 Assert.AreEqual (con_a.GetNextControl (ctrls_c [2], true), ctrls_a [0], "ctrls-c-5");
406 Assert.AreEqual (con_a.GetNextControl (ctrls_c [2], false), ctrls_a [2], "ctrls-c-6");
407 form.Dispose ();
410 [Test]
411 public void GetNextControlFromContainerB ()
413 Form form = new Form ();
414 form.ShowInTaskbar = false;
415 ContainerPoker con_a = new ContainerPoker ("container-a");
416 ContainerPoker con_b = new ContainerPoker ("container-b");
417 ContainerPoker con_c = new ContainerPoker ("container-c");
418 ControlPoker [] ctrls_a = new ControlPoker [] {
419 new ControlPoker ("ctrls-a-0"), new ControlPoker ("ctrls-a-1"), new ControlPoker ("ctrls-a-2")
421 ControlPoker [] ctrls_b = new ControlPoker [] {
422 new ControlPoker ("ctrls-b-0"), new ControlPoker ("ctrls-b-1"), new ControlPoker ("ctrls-b-2")
424 ControlPoker [] ctrls_c = new ControlPoker [] {
425 new ControlPoker ("ctrls-c-0"), new ControlPoker ("ctrls-c-1"), new ControlPoker ("ctrls-c-2")
428 con_a.Controls.AddRange (ctrls_a);
429 con_b.Controls.AddRange (ctrls_b);
430 con_c.Controls.AddRange (ctrls_c);
432 form.Controls.Add (con_a);
433 form.Controls.Add (con_b);
434 form.Controls.Add (con_c);
436 form.Show ();
438 // top level movement
439 Assert.AreEqual (con_b.GetNextControl (null, true), ctrls_b [0], "null-1");
440 Assert.AreEqual (con_b.GetNextControl (null, false), ctrls_b [2], "null-2");
442 Assert.AreEqual (con_b.GetNextControl (form, true), ctrls_b [0], "form-1");
443 Assert.AreEqual (con_b.GetNextControl (form, false), ctrls_b [2], "form-2");
445 Assert.AreEqual (con_b.GetNextControl (con_a, true), ctrls_b [0], "container-1");
446 Assert.AreEqual (con_b.GetNextControl (con_a, false), ctrls_b [2], "container-2");
447 Assert.AreEqual (con_b.GetNextControl (con_b, true), ctrls_b [0], "container-3");
448 Assert.AreEqual (con_b.GetNextControl (con_b, false), ctrls_b [2], "container-4");
449 Assert.AreEqual (con_b.GetNextControl (con_c, true), ctrls_b [0], "container-5");
450 Assert.AreEqual (con_b.GetNextControl (con_c, false), ctrls_b [2], "container-6");
452 Assert.AreEqual (con_b.GetNextControl (ctrls_a [0], true), ctrls_b [0], "ctrls-a-1");
453 Assert.AreEqual (con_b.GetNextControl (ctrls_a [0], false), ctrls_b [2], "ctrls-a-2");
454 Assert.AreEqual (con_b.GetNextControl (ctrls_a [1], true), ctrls_b [0], "ctrls-a-3");
455 Assert.AreEqual (con_b.GetNextControl (ctrls_a [1], false), ctrls_b [2], "ctrls-a-4");
456 Assert.AreEqual (con_b.GetNextControl (ctrls_a [2], true), ctrls_b [0], "ctrls-a-5");
457 Assert.AreEqual (con_b.GetNextControl (ctrls_a [2], false), ctrls_b [2], "ctrls-a-6");
459 Assert.AreEqual (con_b.GetNextControl (ctrls_b [0], true), ctrls_b [1], "ctrls-b-1");
460 Assert.AreEqual (con_b.GetNextControl (ctrls_b [0], false), null, "ctrls-b-2");
461 Assert.AreEqual (con_b.GetNextControl (ctrls_b [1], true), ctrls_b [2], "ctrls-b-3");
462 Assert.AreEqual (con_b.GetNextControl (ctrls_b [1], false), ctrls_b [0], "ctrls-b-4");
463 Assert.AreEqual (con_b.GetNextControl (ctrls_b [2], true), null, "ctrls-b-5");
464 Assert.AreEqual (con_b.GetNextControl (ctrls_b [2], false), ctrls_b [1], "ctrls-b-6");
466 Assert.AreEqual (con_b.GetNextControl (ctrls_c [0], true), ctrls_b [0], "ctrls-c-1");
467 Assert.AreEqual (con_b.GetNextControl (ctrls_c [0], false), ctrls_b [2], "ctrls-c-2");
468 Assert.AreEqual (con_b.GetNextControl (ctrls_c [1], true), ctrls_b [0], "ctrls-c-3");
469 Assert.AreEqual (con_b.GetNextControl (ctrls_c [1], false), ctrls_b [2], "ctrls-c-4");
470 Assert.AreEqual (con_b.GetNextControl (ctrls_c [2], true), ctrls_b [0], "ctrls-c-5");
471 Assert.AreEqual (con_b.GetNextControl (ctrls_c [2], false), ctrls_b [2], "ctrls-c-6");
472 form.Dispose ();
475 [Test]
476 public void GetNextControlFromContainerC ()
478 Form form = new Form ();
479 form.ShowInTaskbar = false;
480 ContainerPoker con_a = new ContainerPoker ("container-a");
481 ContainerPoker con_b = new ContainerPoker ("container-b");
482 ContainerPoker con_c = new ContainerPoker ("container-c");
483 ControlPoker [] ctrls_a = new ControlPoker [] {
484 new ControlPoker ("ctrls-a-0"), new ControlPoker ("ctrls-a-1"), new ControlPoker ("ctrls-a-2")
486 ControlPoker [] ctrls_b = new ControlPoker [] {
487 new ControlPoker ("ctrls-b-0"), new ControlPoker ("ctrls-b-1"), new ControlPoker ("ctrls-b-2")
489 ControlPoker [] ctrls_c = new ControlPoker [] {
490 new ControlPoker ("ctrls-c-0"), new ControlPoker ("ctrls-c-1"), new ControlPoker ("ctrls-c-2")
493 con_a.Controls.AddRange (ctrls_a);
494 con_b.Controls.AddRange (ctrls_b);
495 con_c.Controls.AddRange (ctrls_c);
497 form.Controls.Add (con_a);
498 form.Controls.Add (con_b);
499 form.Controls.Add (con_c);
501 form.Show ();
503 // top level movement,
504 Assert.AreEqual (con_c.GetNextControl (null, true), ctrls_c [0], "null-1");
505 Assert.AreEqual (con_c.GetNextControl (null, false), ctrls_c [2], "null-2");
507 Assert.AreEqual (con_c.GetNextControl (form, true), ctrls_c [0], "form-1");
508 Assert.AreEqual (con_c.GetNextControl (form, false), ctrls_c [2], "form-2");
510 Assert.AreEqual (con_c.GetNextControl (con_a, true), ctrls_c [0], "container-1");
511 Assert.AreEqual (con_c.GetNextControl (con_a, false), ctrls_c [2], "container-2");
512 Assert.AreEqual (con_c.GetNextControl (con_b, true), ctrls_c [0], "container-3");
513 Assert.AreEqual (con_c.GetNextControl (con_b, false), ctrls_c [2], "container-4");
514 Assert.AreEqual (con_c.GetNextControl (con_c, true), ctrls_c [0], "container-5");
515 Assert.AreEqual (con_c.GetNextControl (con_c, false), ctrls_c [2], "container-6");
517 Assert.AreEqual (con_c.GetNextControl (ctrls_a [0], true), ctrls_c [0], "ctrls-a-1");
518 Assert.AreEqual (con_c.GetNextControl (ctrls_a [0], false), ctrls_c [2], "ctrls-a-2");
519 Assert.AreEqual (con_c.GetNextControl (ctrls_a [1], true), ctrls_c [0], "ctrls-a-3");
520 Assert.AreEqual (con_c.GetNextControl (ctrls_a [1], false), ctrls_c [2], "ctrls-a-4");
521 Assert.AreEqual (con_c.GetNextControl (ctrls_a [2], true), ctrls_c [0], "ctrls-a-5");
522 Assert.AreEqual (con_c.GetNextControl (ctrls_a [2], false), ctrls_c [2], "ctrls-a-6");
524 Assert.AreEqual (con_c.GetNextControl (ctrls_b [0], true), ctrls_c [0], "ctrls-b-1");
525 Assert.AreEqual (con_c.GetNextControl (ctrls_b [0], false), ctrls_c [2], "ctrls-b-2");
526 Assert.AreEqual (con_c.GetNextControl (ctrls_b [1], true), ctrls_c [0], "ctrls-b-3");
527 Assert.AreEqual (con_c.GetNextControl (ctrls_b [1], false), ctrls_c [2], "ctrls-b-4");
528 Assert.AreEqual (con_c.GetNextControl (ctrls_b [2], true), ctrls_c [0], "ctrls-b-5");
529 Assert.AreEqual (con_c.GetNextControl (ctrls_b [2], false), ctrls_c [2], "ctrls-b-6");
531 Assert.AreEqual (con_c.GetNextControl (ctrls_c [0], true), ctrls_c [1], "ctrls-c-1");
532 Assert.AreEqual (con_c.GetNextControl (ctrls_c [0], false), null, "ctrls-c-2");
533 Assert.AreEqual (con_c.GetNextControl (ctrls_c [1], true), ctrls_c [2], "ctrls-c-3");
534 Assert.AreEqual (con_c.GetNextControl (ctrls_c [1], false), ctrls_c [0], "ctrls-c-4");
535 Assert.AreEqual (con_c.GetNextControl (ctrls_c [2], true), null, "ctrls-c-5");
536 Assert.AreEqual (con_c.GetNextControl (ctrls_c [2], false), ctrls_c [1], "ctrls-c-6");
537 form.Dispose ();
540 [Test]
541 public void GetNextControl2FromForm ()
543 Form form = new Form ();
544 form.ShowInTaskbar = false;
545 ContainerPoker con_a = new ContainerPoker ("container-a");
546 ContainerPoker con_b = new ContainerPoker ("container-b");
547 ContainerPoker con_c = new ContainerPoker ("container-c");
549 TestHelper.RemoveWarning (con_b, con_c);
551 ControlPoker [] ctrls_a = new ControlPoker [] {
552 new ControlPoker ("ctrls-a-0"), new ControlPoker ("ctrls-a-1"), new ControlPoker ("ctrls-a-2")
554 ControlPoker ctrl_b = new ControlPoker ("ctrl-b");
556 con_a.Controls.AddRange (ctrls_a);
558 form.Controls.Add (con_a);
559 form.Controls.Add (ctrl_b);
561 form.Show ();
563 // top level movement,
564 Assert.AreEqual (form.GetNextControl (null, true), con_a, "null-1");
565 Assert.AreEqual (form.GetNextControl (null, false), ctrl_b, "null-2");
567 Assert.AreEqual (form.GetNextControl (form, true), con_a, "form-1");
568 Assert.AreEqual (form.GetNextControl (form, false), ctrl_b, "form-2");
570 Assert.AreEqual (form.GetNextControl (con_a, true), ctrl_b, "con-a-1");
571 Assert.AreEqual (form.GetNextControl (con_a, false), null, "con-a-2");
573 Assert.AreEqual (form.GetNextControl (ctrl_b, true), null, "ctrl-b-1");
574 Assert.AreEqual (form.GetNextControl (ctrl_b, false), con_a, "ctrl-b-2");
576 Assert.AreEqual (form.GetNextControl (ctrls_a [0], true), ctrls_a [1], "ctrl-a-1");
577 Assert.AreEqual (form.GetNextControl (ctrls_a [0], false), con_a, "ctrl-a-2");
578 Assert.AreEqual (form.GetNextControl (ctrls_a [1], true), ctrls_a [2], "ctrl-a-1");
579 Assert.AreEqual (form.GetNextControl (ctrls_a [1], false), ctrls_a [0], "ctrl-a-2");
580 Assert.AreEqual (form.GetNextControl (ctrls_a [2], true), ctrl_b, "ctrl-a-1");
581 Assert.AreEqual (form.GetNextControl (ctrls_a [2], false), ctrls_a [1], "ctrl-a-2");
582 form.Dispose();
585 [Test]
586 public void GetNextControlFlat ()
588 Form form = new Form ();
589 form.ShowInTaskbar = false;
591 form.Controls.AddRange (flat_controls);
592 form.Show ();
594 Assert.AreEqual (form.GetNextControl (null, true), flat_controls [0], "form-1");
595 Assert.AreEqual (form.GetNextControl (null, false), flat_controls [2], "form-2");
596 Assert.AreEqual (form.GetNextControl (flat_controls [0], true), flat_controls [1], "form-3");
597 Assert.AreEqual (form.GetNextControl (flat_controls [0], false), null, "form-4");
598 Assert.AreEqual (form.GetNextControl (flat_controls [1], true), flat_controls [2], "form-5");
599 Assert.AreEqual (form.GetNextControl (flat_controls [1], false), flat_controls [0], "form-6");
600 Assert.AreEqual (form.GetNextControl (flat_controls [2], true), null, "form-7");
601 Assert.AreEqual (form.GetNextControl (flat_controls [2], false), flat_controls [1],"form-8");
604 Assert.AreEqual (flat_controls [0].GetNextControl (null, true), null, "ctrls-0-1");
605 Assert.AreEqual (flat_controls [0].GetNextControl (null, false), null, "ctrls-0-2");
606 Assert.AreEqual (flat_controls [0].GetNextControl (flat_controls [0], true), null, "ctrls-0-3");
607 Assert.AreEqual (flat_controls [0].GetNextControl (flat_controls [0], false), null, "ctrls-0-4");
608 Assert.AreEqual (flat_controls [0].GetNextControl (flat_controls [1], true), null, "ctrls-0-5");
609 Assert.AreEqual (flat_controls [0].GetNextControl (flat_controls [1], false), null, "ctrls-0-6");
610 Assert.AreEqual (flat_controls [0].GetNextControl (flat_controls [2], true), null, "ctrls-0-7");
611 Assert.AreEqual (flat_controls [0].GetNextControl (flat_controls [2], false), null,"ctrls-0-8");
612 form.Dispose ();
615 [Test]
616 public void GetNextGroupBoxControlFlat ()
618 Form form = new Form ();
619 form.ShowInTaskbar = false;
620 GroupBoxPoker gbp = new GroupBoxPoker ("group-box");
622 gbp.Controls.AddRange (flat_controls);
623 form.Controls.Add (gbp);
624 form.Show ();
626 Assert.AreEqual (form.GetNextControl (null, true), gbp, "form-1");
627 Assert.AreEqual (form.GetNextControl (null, false), flat_controls [2], "form-2");
629 Assert.AreEqual (form.GetNextControl (gbp, true), flat_controls [0], "gb-1");
630 Assert.AreEqual (form.GetNextControl (gbp, false), null, "gb-2");
632 Assert.AreEqual (gbp.GetNextControl (null, true), flat_controls [0], "gb-3");
633 Assert.AreEqual (gbp.GetNextControl (null, false), flat_controls [2], "gb-4");
634 Assert.AreEqual (gbp.GetNextControl (gbp, true), flat_controls [0], "gb-5");
635 Assert.AreEqual (gbp.GetNextControl (gbp, false), flat_controls [2], "gb-6");
637 Assert.AreEqual (form.GetNextControl (flat_controls [0], true), flat_controls [1], "form-ctrls-0-forward");
638 Assert.AreEqual (form.GetNextControl (flat_controls [0], false), gbp, "form-ctrls-0-backward");
639 Assert.AreEqual (form.GetNextControl (flat_controls [1], true), flat_controls [2], "form-ctrls-1-forward");
640 Assert.AreEqual (form.GetNextControl (flat_controls [1], false), flat_controls [0], "form-ctrls-1-backward");
641 Assert.AreEqual (form.GetNextControl (flat_controls [2], true), null, "form-ctrls-2-forward");
642 Assert.AreEqual (form.GetNextControl (flat_controls [2], false), flat_controls [1],"form-ctrls-2-backward");
644 Assert.AreEqual (gbp.GetNextControl (flat_controls [0], true), flat_controls [1], "gbp-ctrls-0-forward");
645 Assert.AreEqual (gbp.GetNextControl (flat_controls [0], false), null, "gbp-ctrls-0-backward");
646 Assert.AreEqual (gbp.GetNextControl (flat_controls [1], true), flat_controls [2], "gbp-ctrls-1-forward");
647 Assert.AreEqual (gbp.GetNextControl (flat_controls [1], false), flat_controls [0], "gbp-ctrls-1-backward");
648 Assert.AreEqual (gbp.GetNextControl (flat_controls [2], true), null, "gbp-ctrls-2-forward");
649 Assert.AreEqual (gbp.GetNextControl (flat_controls [2], false), flat_controls [1],"gbp-ctrls-2-backward");
650 form.Dispose ();
653 [Test]
654 public void GetNextControlFromTabControl ()
656 Form form = new Form ();
657 form.ShowInTaskbar = false;
658 TabControl tab = new TabControl ();
659 TabPage page1 = new TabPage ("page one");
660 TabPage page2 = new TabPage ("page two");
662 tab.TabPages.Add (page1);
663 tab.TabPages.Add (page2);
665 form.Controls.Add (tab);
666 form.Show ();
668 Assert.AreEqual (form.GetNextControl (null, true), tab, "form-1");
669 Assert.AreEqual (form.GetNextControl (null, false), page2, "form-2");
671 Assert.AreEqual (form.GetNextControl (tab, true), page1, "tab-1");
672 Assert.AreEqual (form.GetNextControl (tab, false), null, "tab-2");
674 Assert.AreEqual (form.GetNextControl (page1, true), page2, "page-one-1");
675 Assert.AreEqual (form.GetNextControl (page1, false), tab, "page-one-2");
677 Assert.AreEqual (form.GetNextControl (page2, true), null, "page-two-1");
678 Assert.AreEqual (form.GetNextControl (page2, false), page1, "page-two-2");
679 form.Dispose ();
682 [Test]
683 public void GetNextControlFromTabControl2 () {
684 Form form = new Form ();
685 form.ShowInTaskbar = false;
686 TabControl tab = new TabControl ();
688 TabPage page1 = new TabPage ("page one");
689 page1.Controls.AddRange (flat_controls);
691 TabPage page2 = new TabPage ("page two");
693 tab.TabPages.Add (page1);
695 tab.TabPages.Add (page2);
697 form.Controls.Add (tab);
698 form.Show ();
700 Assert.AreEqual (form.GetNextControl (null, true), tab, "form-1");
701 Assert.AreEqual (form.GetNextControl (null, false), page2, "form-2");
703 Assert.AreEqual (form.GetNextControl (tab, true), page1, "tab-1");
704 Assert.AreEqual (form.GetNextControl (tab, false), null, "tab-2");
706 Assert.AreEqual (form.GetNextControl (page1, true), flat_controls [0], "page-one-1");
707 Assert.AreEqual (form.GetNextControl (page1, false), tab, "page-one-2");
709 Assert.AreEqual (form.GetNextControl (page2, true), null, "page-two-1");
710 Assert.AreEqual (form.GetNextControl (page2, false), flat_controls [2], "page-two-2");
712 Assert.AreEqual (form.GetNextControl (flat_controls [0], false), page1, "form-ctrls-0-backward");
713 Assert.AreEqual (form.GetNextControl (flat_controls [2], true), page2, "form-ctrls-2-forward");
715 Assert.AreEqual (tab.GetNextControl (null, true), page1, "tab-null-forward");
716 Assert.AreEqual (tab.GetNextControl (page1, false), null, "tab-page1-backward");
718 Assert.AreEqual (tab.GetNextControl (flat_controls [0], false), page1, "tab-ctrls-0-backward");
719 Assert.AreEqual (tab.GetNextControl (flat_controls [2], true), page2, "tab-ctrls-2-forward");
721 Assert.AreEqual (page1.GetNextControl (flat_controls [0], true), flat_controls [1], "page1-ctrls-0-forward");
722 Assert.AreEqual (page1.GetNextControl (flat_controls [0], false), null, "page1-ctrls-0-backward");
723 Assert.AreEqual (page1.GetNextControl (flat_controls [1], true), flat_controls [2], "page1-ctrls-1-forward");
724 Assert.AreEqual (page1.GetNextControl (flat_controls [1], false), flat_controls [0], "page1-ctrls-1-backward");
725 Assert.AreEqual (page1.GetNextControl (flat_controls [2], true), null, "page1-ctrls-2-forward");
726 Assert.AreEqual (page1.GetNextControl (flat_controls [2], false), flat_controls [1],"page1-ctrls-2-backward");
727 form.Dispose ();
730 [Test]
731 public void GetNextControlTabIndex ()
733 Form form = new Form ();
734 form.ShowInTaskbar = false;
735 ControlPoker [] ctrls = new ControlPoker [5];
737 for (int i = 0; i < 5; i++) {
738 ctrls [i] = new ControlPoker ();
739 ctrls [i].TabIndex = i;
740 ctrls [i].Text = "ctrl " + i;
743 form.Controls.AddRange (ctrls);
744 form.Show ();
746 Assert.AreEqual (form.GetNextControl (null, true), ctrls [0], "A1");
747 Assert.AreEqual (form.GetNextControl (null, false), ctrls [4], "A2");
749 Assert.AreEqual (form.GetNextControl (ctrls [0], true), ctrls [1], "A3");
750 Assert.AreEqual (form.GetNextControl (ctrls [0], false), null, "A4");
752 Assert.AreEqual (form.GetNextControl (ctrls [1], true), ctrls [2], "A5");
753 Assert.AreEqual (form.GetNextControl (ctrls [1], false), ctrls [0], "A6");
755 Assert.AreEqual (form.GetNextControl (ctrls [2], true), ctrls [3], "A7");
756 Assert.AreEqual (form.GetNextControl (ctrls [2], false), ctrls [1], "A8");
758 Assert.AreEqual (form.GetNextControl (ctrls [3], true), ctrls [4], "A9");
759 Assert.AreEqual (form.GetNextControl (ctrls [3], false), ctrls [2], "A10");
761 Assert.AreEqual (form.GetNextControl (ctrls [4], true), null, "A11");
762 Assert.AreEqual (form.GetNextControl (ctrls [4], false), ctrls [3], "A12");
764 form.Dispose ();
767 [Test]
768 public void GetNextControlDuplicateTabIndex ()
770 Form form = new Form ();
771 form.ShowInTaskbar = false;
772 ControlPoker [] ctrls = new ControlPoker [5];
774 for (int i = 0; i < 5; i++) {
775 ctrls [i] = new ControlPoker ();
776 ctrls [i].TabIndex = i;
777 ctrls [i].Text = "ctrl " + i;
780 ctrls [3].TabIndex = 2;
782 form.Controls.AddRange (ctrls);
783 form.Show ();
785 Assert.AreEqual (form.GetNextControl (null, true), ctrls [0], "A1");
786 Assert.AreEqual (form.GetNextControl (null, false), ctrls [4], "A2");
788 Assert.AreEqual (form.GetNextControl (ctrls [0], true), ctrls [1], "A3");
789 Assert.AreEqual (form.GetNextControl (ctrls [0], false), null, "A4");
791 Assert.AreEqual (form.GetNextControl (ctrls [1], true), ctrls [2], "A5");
792 Assert.AreEqual (form.GetNextControl (ctrls [1], false), ctrls [0], "A6");
794 Assert.AreEqual (form.GetNextControl (ctrls [2], true), ctrls [3], "A7");
795 Assert.AreEqual (form.GetNextControl (ctrls [2], false), ctrls [1], "A8");
797 Assert.AreEqual (form.GetNextControl (ctrls [3], true), ctrls [4], "A9");
798 Assert.AreEqual (form.GetNextControl (ctrls [3], false), ctrls [2], "A10");
800 Assert.AreEqual (form.GetNextControl (ctrls [4], true), null, "A11");
801 Assert.AreEqual (form.GetNextControl (ctrls [4], false), ctrls [3], "A12");
803 form.Dispose ();
806 [Test]
807 public void GetNextControlComposite ()
809 Form form = new Form ();
810 form.ShowInTaskbar = false;
811 ControlPoker a = new ControlPoker ("a");
812 ControlPoker b = new ControlPoker ("b");
813 ControlPoker c = new ControlPoker ("c");
815 form.Controls.Add (a);
816 form.Controls.Add (b);
817 b.Controls.Add (c);
819 form.Show ();
821 Assert.AreEqual (form.GetNextControl (a, true), b, "form-1");
822 Assert.AreEqual (form.GetNextControl (a, false), null, "form-2");
824 form.Dispose ();
827 [Test]
828 public void ActiveControl ()
830 if (TestHelper.RunningOnUnix) {
831 Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
834 Form form = new Form ();
835 form.ShowInTaskbar = false;
837 form.Controls.AddRange (flat_controls);
838 form.Show ();
840 Assert.AreEqual (form.ActiveControl, flat_controls [0], "A1");
842 flat_controls [1].Focus ();
844 Assert.AreEqual (form.ActiveControl, flat_controls [1], "A2");
846 form.Dispose ();
849 [Test]
850 [Category ("NotWorking")]
851 public void ActiveControl2 () {
852 ContainerControl cc = new ContainerControl ();
853 Control c1 = new Control ();
854 cc.Controls.Add (c1);
855 Control c2 = new Control ();
856 cc.Controls.Add (c2);
857 Control c3 = new Control ();
858 cc.Controls.Add (c3);
859 Assert.IsFalse (c1.Focused, "#A1");
860 Assert.IsFalse (c2.Focused, "#A2");
861 Assert.IsFalse (c3.Focused, "#A3");
862 Assert.IsNull (cc.ActiveControl);
864 cc.ActiveControl = c1;
865 Assert.IsFalse (c1.Focused, "#B1");
866 Assert.IsFalse (c2.Focused, "#B2");
867 Assert.IsFalse (c3.Focused, "#B3");
868 Assert.AreSame (c1, cc.ActiveControl, "#B4");
870 cc.ActiveControl = c2;
871 Assert.IsFalse (c1.Focused, "#C1");
872 Assert.IsFalse (c2.Focused, "#C2");
873 Assert.IsFalse (c3.Focused, "#C3");
874 Assert.AreSame (c2, cc.ActiveControl, "#C4");
876 c1.Focus ();
877 Assert.IsFalse (c1.Focused, "#D1");
878 Assert.IsFalse (c2.Focused, "#D2");
879 Assert.IsFalse (c3.Focused, "#D3");
880 Assert.AreSame (c2, cc.ActiveControl, "#D4");
882 cc.ActiveControl = c2;
883 Assert.IsFalse (c1.Focused, "#E1");
884 Assert.IsFalse (c2.Focused, "#E2");
885 Assert.IsFalse (c3.Focused, "#E3");
886 Assert.AreSame (c2, cc.ActiveControl, "#E4");
888 cc.Controls.Remove (c2);
889 Assert.IsFalse (c1.Focused, "#F1");
890 Assert.IsFalse (c2.Focused, "#F2");
891 Assert.IsFalse (c3.Focused, "#F3");
892 Assert.AreSame (c1, cc.ActiveControl, "#F3");
894 cc.ActiveControl = c3;
895 Assert.IsFalse (c1.Focused, "#G1");
896 Assert.IsFalse (c2.Focused, "#G2");
897 Assert.IsFalse (c3.Focused, "#G3");
898 Assert.AreSame (c3, cc.ActiveControl, "#G4");
900 Form form = new Form ();
901 form.ShowInTaskbar = false;
902 form.Controls.Add (cc);
903 form.Show ();
905 Assert.IsTrue (c1.Focused, "#H1");
906 Assert.IsFalse (c2.Focused, "#H2");
907 Assert.IsFalse (c3.Focused, "#H3");
908 Assert.AreSame (c1, cc.ActiveControl, "#H4");
910 cc.ActiveControl = c3;
911 Assert.IsFalse (c1.Focused, "#I1");
912 Assert.IsFalse (c2.Focused, "#I2");
913 Assert.IsTrue (c3.Focused, "#I3");
914 Assert.AreSame (c3, cc.ActiveControl, "#I4");
916 c1.Focus ();
917 Assert.IsTrue (c1.Focused, "#J1");
918 Assert.IsFalse (c2.Focused, "#J2");
919 Assert.IsFalse (c3.Focused, "#J3");
920 Assert.AreSame (c1, cc.ActiveControl, "#J4");
922 form.Dispose ();
925 [Test] // bug #80411
926 public void ActiveControl_NoChild () {
927 ContainerControl cc = new ContainerControl ();
928 try {
929 cc.ActiveControl = new Control ();
930 Assert.Fail ("#1");
931 } catch (ArgumentException ex) {
932 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
933 Assert.IsNotNull (ex.Message, "#3");
934 Assert.IsNull (ex.ParamName, "#4");
935 Assert.IsNull (ex.InnerException, "#5");
940 StringBuilder sb;
941 void enter(object sender, EventArgs e) {
942 sb.Append(String.Format("OnEnter: {0} {1}", ((Control)sender).Name, sender));
943 sb.Append("\n");
946 void leave(object sender, EventArgs e) {
947 sb.Append(String.Format("OnLeave: {0} {1}", ((Control)sender).Name, sender));
948 sb.Append("\n");
951 void gotfocus(object sender, EventArgs e) {
952 sb.Append(String.Format("OnGotFocus: {0} {1}", ((Control)sender).Name, sender));
953 sb.Append("\n");
956 void lostfocus(object sender, EventArgs e) {
957 sb.Append(String.Format("OnLostFocus: {0} {1}", ((Control)sender).Name, sender));
958 sb.Append("\n");
961 void validating(object sender, CancelEventArgs e) {
962 sb.Append(String.Format("OnValidating: {0} {1}", ((Control)sender).Name, sender));
963 sb.Append("\n");
966 void validated(object sender, EventArgs e) {
967 sb.Append(String.Format("OnValidated: {0} {1}", ((Control)sender).Name, sender));
968 sb.Append("\n");
971 void connect(Control c) {
972 c.Enter += new EventHandler(enter);
973 c.Leave += new EventHandler(leave);
974 c.GotFocus += new EventHandler(gotfocus);
975 c.LostFocus += new EventHandler(lostfocus);
976 c.Validating += new CancelEventHandler(validating);
977 c.Validated += new EventHandler(validated);
980 [Test]
981 public void EnterLeaveFocusEventTest ()
983 if (TestHelper.RunningOnUnix) {
984 Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
987 Form f = new Form();
988 f.ShowInTaskbar = false;
990 f.Name = "Form1";
991 ContainerControl cc0 = new ContainerControl();
992 cc0.Name = "ContainerControl 0";
993 ContainerControl cc1 = new ContainerControl();
994 cc1.Name = "ContainerControl 1";
995 ContainerControl cc2 = new ContainerControl();
996 cc2.Name = "ContainerControl 2";
997 Control c1 = new Control();
998 c1.Name = "Control 1";
999 Control c2 = new Control();
1000 c2.Name = "Control 2";
1002 connect(f);
1003 connect(cc0);
1004 connect(cc1);
1005 connect(cc2);
1006 connect(c1);
1007 connect(c2);
1009 cc0.Controls.Add(cc1);
1010 cc0.Controls.Add(cc2);
1011 cc1.Controls.Add(c1);
1012 cc2.Controls.Add(c2);
1014 f.Controls.Add(cc0);
1016 sb = new StringBuilder ();
1017 f.Show ();
1018 c1.Select();
1020 Assert.AreEqual (@"OnEnter: ContainerControl 0 System.Windows.Forms.ContainerControl
1021 OnEnter: ContainerControl 1 System.Windows.Forms.ContainerControl
1022 OnEnter: Control 1 System.Windows.Forms.Control
1023 OnGotFocus: Control 1 System.Windows.Forms.Control
1025 sb.ToString (), "1");
1027 sb.Length = 0;
1028 c2.Select();
1029 Assert.AreEqual (@"OnLeave: Control 1 System.Windows.Forms.Control
1030 OnLeave: ContainerControl 1 System.Windows.Forms.ContainerControl
1031 OnValidating: Control 1 System.Windows.Forms.Control
1032 OnValidated: Control 1 System.Windows.Forms.Control
1033 OnValidating: ContainerControl 1 System.Windows.Forms.ContainerControl
1034 OnValidated: ContainerControl 1 System.Windows.Forms.ContainerControl
1035 OnEnter: ContainerControl 2 System.Windows.Forms.ContainerControl
1036 OnEnter: Control 2 System.Windows.Forms.Control
1037 OnLostFocus: Control 1 System.Windows.Forms.Control
1038 OnGotFocus: Control 2 System.Windows.Forms.Control
1040 sb.ToString (), "2");
1042 sb.Length = 0;
1043 cc1.Select();
1044 Assert.AreEqual (@"OnLeave: Control 2 System.Windows.Forms.Control
1045 OnLeave: ContainerControl 2 System.Windows.Forms.ContainerControl
1046 OnValidating: Control 2 System.Windows.Forms.Control
1047 OnValidated: Control 2 System.Windows.Forms.Control
1048 OnValidating: ContainerControl 2 System.Windows.Forms.ContainerControl
1049 OnValidated: ContainerControl 2 System.Windows.Forms.ContainerControl
1050 OnEnter: ContainerControl 1 System.Windows.Forms.ContainerControl
1051 OnLostFocus: Control 2 System.Windows.Forms.Control
1052 OnGotFocus: ContainerControl 1 System.Windows.Forms.ContainerControl
1054 sb.ToString (), "3");
1056 sb.Length = 0;
1057 cc2.Select();
1058 Assert.AreEqual (@"OnLeave: ContainerControl 1 System.Windows.Forms.ContainerControl
1059 OnValidating: ContainerControl 1 System.Windows.Forms.ContainerControl
1060 OnValidated: ContainerControl 1 System.Windows.Forms.ContainerControl
1061 OnEnter: ContainerControl 2 System.Windows.Forms.ContainerControl
1062 OnLostFocus: ContainerControl 1 System.Windows.Forms.ContainerControl
1063 OnGotFocus: ContainerControl 2 System.Windows.Forms.ContainerControl
1065 sb.ToString (), "4");
1067 Assert.IsNull (cc2.ActiveControl, "5");
1069 sb.Length = 0;
1070 c2.Select();
1071 Assert.AreEqual (@"OnEnter: Control 2 System.Windows.Forms.Control
1072 OnLostFocus: ContainerControl 2 System.Windows.Forms.ContainerControl
1073 OnGotFocus: Control 2 System.Windows.Forms.Control
1075 sb.ToString (), "6");
1077 sb.Length = 0;
1078 cc1.Select();
1079 Assert.AreEqual (@"OnLeave: Control 2 System.Windows.Forms.Control
1080 OnLeave: ContainerControl 2 System.Windows.Forms.ContainerControl
1081 OnValidating: Control 2 System.Windows.Forms.Control
1082 OnValidated: Control 2 System.Windows.Forms.Control
1083 OnValidating: ContainerControl 2 System.Windows.Forms.ContainerControl
1084 OnValidated: ContainerControl 2 System.Windows.Forms.ContainerControl
1085 OnEnter: ContainerControl 1 System.Windows.Forms.ContainerControl
1086 OnLostFocus: Control 2 System.Windows.Forms.Control
1087 OnGotFocus: ContainerControl 1 System.Windows.Forms.ContainerControl
1089 sb.ToString (), "7");
1091 sb.Length = 0;
1092 f.Select();
1093 Assert.AreEqual ("", sb.ToString (), "8");
1095 f.Dispose ();
1098 [Test]
1099 [Category ("NotWorking")]
1100 public void ActiveControl_Invisible () {
1101 ContainerControl cc = new ContainerControl ();
1102 Control c1 = new Control ();
1103 c1.Visible = false;
1104 cc.Controls.Add (c1);
1105 Control c2 = new Control ();
1106 cc.Controls.Add (c2);
1107 cc.ActiveControl = c1;
1108 Assert.IsFalse (c1.Focused, "#A1");
1109 Assert.IsFalse (c2.Focused, "#A2");
1110 Assert.AreSame (c1, cc.ActiveControl, "#A3");
1112 Form form = new Form ();
1113 form.ShowInTaskbar = false;
1114 form.Controls.Add (cc);
1115 form.Show ();
1117 Assert.IsFalse (c1.Focused, "#B1");
1118 Assert.IsTrue (c2.Focused, "#B2");
1119 Assert.AreSame (c2, cc.ActiveControl, "#B3");
1121 cc.ActiveControl = c1;
1122 Assert.IsFalse (c1.Focused, "#C1");
1123 Assert.IsFalse (c2.Focused, "#C2");
1124 Assert.AreSame (c1, cc.ActiveControl, "#C3");
1126 form.Dispose ();
1129 [Test]
1130 [Category ("NotWorking")]
1131 public void ActiveControl_Disabled () {
1132 ContainerControl cc = new ContainerControl ();
1133 Control c1 = new Control ();
1134 c1.Enabled = false;
1135 cc.Controls.Add (c1);
1136 Control c2 = new Control ();
1137 cc.Controls.Add (c2);
1138 cc.ActiveControl = c1;
1139 Assert.IsFalse (c1.Focused, "#A1");
1140 Assert.IsFalse (c2.Focused, "#A2");
1141 Assert.AreSame (c1, cc.ActiveControl, "#A3");
1143 Form form = new Form ();
1144 form.ShowInTaskbar = false;
1145 form.Controls.Add (cc);
1146 form.Show ();
1148 Assert.IsFalse (c1.Focused, "#B1");
1149 Assert.IsTrue (c2.Focused, "#B2");
1150 Assert.AreSame (c2, cc.ActiveControl, "#B3");
1152 cc.ActiveControl = c1;
1153 Assert.IsFalse (c1.Focused, "#C1");
1154 Assert.IsTrue (c2.Focused, "#C2");
1155 Assert.AreSame (c1, cc.ActiveControl, "#C3");
1157 form.Dispose ();
1160 [Test]
1161 [Category ("NotWorking")]
1162 public void ActiveControl_Null () {
1163 ContainerControl cc = new ContainerControl ();
1164 Control c1 = new Control ();
1165 cc.Controls.Add (c1);
1166 Control c2 = new Control ();
1167 cc.Controls.Add (c2);
1168 cc.ActiveControl = c1;
1169 Assert.IsFalse (c1.Focused, "#A1");
1170 Assert.IsFalse (c2.Focused, "#A2");
1171 Assert.AreSame (c1, cc.ActiveControl, "#A3");
1173 cc.ActiveControl = null;
1174 Assert.IsFalse (c1.Focused, "#B1");
1175 Assert.IsFalse (c2.Focused, "#B2");
1176 Assert.IsNull (cc.ActiveControl, "#B3");
1178 Form form = new Form ();
1179 form.ShowInTaskbar = false;
1180 form.Controls.Add (cc);
1181 form.Show ();
1183 Assert.IsTrue (c1.Focused, "#C1");
1184 Assert.IsFalse (c2.Focused, "#C2");
1185 Assert.AreSame (c1, cc.ActiveControl, "#C3");
1187 cc.ActiveControl = c2;
1188 Assert.IsFalse (c1.Focused, "#D1");
1189 Assert.IsTrue (c2.Focused, "#D2");
1190 Assert.AreSame (c2, cc.ActiveControl, "#D3");
1192 cc.ActiveControl = null;
1193 Assert.IsFalse (c1.Focused, "#E1");
1194 Assert.IsFalse (c2.Focused, "#E2");
1195 Assert.IsNull (cc.ActiveControl, "#E3");
1197 form.Dispose ();