2 // Copyright (c) 2006 Novell, Inc.
5 // Jackson Harper (jackson@ximian.com)
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
{
20 public class FocusTest
{
22 public class ControlPoker
: Button
{
24 internal bool directed_select_called
;
26 public ControlPoker ()
30 public ControlPoker (string 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
)
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
)
75 public void _Select (bool directed
, bool forward
)
77 Select (directed
, forward
);
80 public override string ToString ()
82 return String
.Concat (GetType (), " ", Text
);
87 protected virtual void SetUp ()
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 ();
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
);
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");
143 public void SelectNextControlNullTest ()
145 Form form
= new Form ();
146 form
.ShowInTaskbar
= false;
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");
166 public void SelectControlTest ()
168 Form form
= new Form ();
169 form
.ShowInTaskbar
= false;
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");
186 public void EnsureDirectedSelectUsed ()
188 Form form
= new Form ();
189 form
.ShowInTaskbar
= false;
192 form
.Controls
.AddRange (flat_controls
);
194 form
.SelectNextControl (null, true, false, false, false);
195 Assert
.IsTrue (flat_controls
[0].directed_select_called
, "A1");
200 public void ContainerSelectDirectedForward ()
202 Form form
= new Form ();
203 form
.ShowInTaskbar
= false;
204 ContainerPoker cp
= new ContainerPoker ("container-a");
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");
229 public void ContainerSelectDirectedBackward ()
231 Form form
= new Form ();
232 form
.ShowInTaskbar
= false;
233 ContainerPoker cp
= new ContainerPoker ("container-a");
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");
258 [Category ("NotWorking")]
259 public void ContainerSelectUndirectedForward ()
261 Form form
= new Form ();
262 form
.ShowInTaskbar
= false;
263 ContainerPoker cp
= new ContainerPoker ("container-a");
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");
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
);
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");
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
);
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");
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
);
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");
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
);
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");
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
);
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");
586 public void GetNextControlFlat ()
588 Form form
= new Form ();
589 form
.ShowInTaskbar
= false;
591 form
.Controls
.AddRange (flat_controls
);
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");
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
);
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");
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
);
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");
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
);
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");
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
);
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");
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
);
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");
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
);
821 Assert
.AreEqual (form
.GetNextControl (a
, true), b
, "form-1");
822 Assert
.AreEqual (form
.GetNextControl (a
, false), null, "form-2");
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
);
840 Assert
.AreEqual (form
.ActiveControl
, flat_controls
[0], "A1");
842 flat_controls
[1].Focus ();
844 Assert
.AreEqual (form
.ActiveControl
, flat_controls
[1], "A2");
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");
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
);
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");
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");
926 public void ActiveControl_NoChild () {
927 ContainerControl cc
= new ContainerControl ();
929 cc
.ActiveControl
= new Control ();
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");
941 void enter(object sender
, EventArgs e
) {
942 sb
.Append(String
.Format("OnEnter: {0} {1}", ((Control
)sender
).Name
, sender
));
946 void leave(object sender
, EventArgs e
) {
947 sb
.Append(String
.Format("OnLeave: {0} {1}", ((Control
)sender
).Name
, sender
));
951 void gotfocus(object sender
, EventArgs e
) {
952 sb
.Append(String
.Format("OnGotFocus: {0} {1}", ((Control
)sender
).Name
, sender
));
956 void lostfocus(object sender
, EventArgs e
) {
957 sb
.Append(String
.Format("OnLostFocus: {0} {1}", ((Control
)sender
).Name
, sender
));
961 void validating(object sender
, CancelEventArgs e
) {
962 sb
.Append(String
.Format("OnValidating: {0} {1}", ((Control
)sender
).Name
, sender
));
966 void validated(object sender
, EventArgs e
) {
967 sb
.Append(String
.Format("OnValidated: {0} {1}", ((Control
)sender
).Name
, sender
));
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
);
981 public void EnterLeaveFocusEventTest ()
983 if (TestHelper
.RunningOnUnix
) {
984 Assert
.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
988 f
.ShowInTaskbar
= false;
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";
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 ();
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");
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");
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");
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");
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");
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");
1093 Assert
.AreEqual ("", sb
.ToString (), "8");
1099 [Category ("NotWorking")]
1100 public void ActiveControl_Invisible () {
1101 ContainerControl cc
= new ContainerControl ();
1102 Control c1
= new Control ();
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
);
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");
1130 [Category ("NotWorking")]
1131 public void ActiveControl_Disabled () {
1132 ContainerControl cc
= new ContainerControl ();
1133 Control c1
= new Control ();
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
);
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");
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
);
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");