1 // 2 // MdiFormTest.cs: Test cases for MDI Forms. 3 // 4 // Author: 5 // Rolf Bjarne Kvinge (RKvinge@novell.com) 6 // 7 // (C) 2006 Novell, Inc. (http://www.novell.com) 8 // 9 10 using System; 11 using System.Drawing; 12 using System.Reflection; 13 using System.Windows.Forms; 14 using System.ComponentModel; 15 using NUnit.Framework; 16 using CategoryAttribute = NUnit.Framework.CategoryAttribute; 17 using System.Threading; 18 19 namespace MonoTests.System.Windows.Forms 20 { 21 [TestFixture] 22 public class MdiFormTest : TestHelper 23 { 24 private Form main; 25 private Form child1; 26 private Form child2; 27 private Form child3; 28 29 [TearDown] TearDown()30 protected override void TearDown () 31 { 32 if (main != null) 33 main.Dispose (); 34 if (child1 != null) 35 child1.Dispose (); 36 if (child2 != null) 37 child2.Dispose (); 38 if (child3 != null) 39 child3.Dispose (); 40 main = null; 41 child1 = null; 42 child2 = null; 43 child3 = null; 44 base.TearDown (); 45 } 46 47 // No attribute here since this is supposed to be called from 48 // each test directly, not by nunit. SetUp(bool only_create, bool only_text)49 void SetUp (bool only_create, bool only_text) 50 { 51 SetUp (only_create, only_text, false); 52 } 53 54 // No attribute here since this is supposed to be called from 55 // each test directly, not by nunit. SetUp(bool only_create, bool only_text, bool set_parent)56 public void SetUp (bool only_create, bool only_text, bool set_parent) 57 { 58 TearDown (); 59 60 main = new Form (); 61 child1 = new Form (); 62 child2 = new Form (); 63 child3 = new Form (); 64 65 if (only_create) 66 return; 67 68 main.Text = main.Name = "main"; 69 main.ShowInTaskbar = false; 70 child1.Text = child1.Name = "child1"; 71 child2.Text = child2.Name = "child2"; 72 child3.Text = child3.Name = "child3"; 73 74 if (only_text) 75 return; 76 77 main.IsMdiContainer = true; 78 79 if (set_parent) { 80 child1.MdiParent = main; 81 child2.MdiParent = main; 82 child3.MdiParent = main; 83 } 84 } 85 86 [Test] DeactivatedEventTest()87 public void DeactivatedEventTest () 88 { 89 using (Form f = new Form ()) { 90 Form c1 = new Form (); 91 Form c2 = new Form (); 92 EventLogger log1 = new EventLogger (c1); 93 EventLogger log2 = new EventLogger (c2); 94 95 f.IsMdiContainer = true; 96 f.ShowInTaskbar = false; 97 c2.MdiParent = c1.MdiParent = f; 98 99 c1.Show (); 100 c2.Show (); 101 Assert.AreEqual (0, log1.CountEvents ("Deactivate"), "#A1"); 102 Assert.AreEqual (0, log2.CountEvents ("Deactivate"), "#A2"); 103 104 f.Show (); 105 Assert.AreEqual (1, log1.CountEvents ("Deactivate"), "#B1"); 106 Assert.AreEqual (0, log2.CountEvents ("Deactivate"), "#B2"); 107 108 c1.Show (); 109 c2.Show (); 110 Assert.AreEqual (1, log1.CountEvents ("Deactivate"), "#C1"); 111 Assert.AreEqual (0, log2.CountEvents ("Deactivate"), "#C2"); 112 113 c1.Activate (); 114 Assert.AreEqual (1, log1.CountEvents ("Deactivate"), "#D1"); 115 Assert.AreEqual (1, log2.CountEvents ("Deactivate"), "#D2"); 116 117 c1.Activate (); 118 Assert.AreEqual (1, log1.CountEvents ("Deactivate"), "#E1"); 119 Assert.AreEqual (1, log2.CountEvents ("Deactivate"), "#E2"); 120 121 c2.Activate (); 122 Assert.AreEqual (2, log1.CountEvents ("Deactivate"), "#F1"); 123 Assert.AreEqual (1, log2.CountEvents ("Deactivate"), "#F2"); 124 125 c1.Activate (); 126 Assert.AreEqual (2, log1.CountEvents ("Deactivate"), "#G1"); 127 Assert.AreEqual (2, log2.CountEvents ("Deactivate"), "#G2"); 128 } 129 } 130 131 [Test] ActivatedEventTest()132 public void ActivatedEventTest () 133 { 134 using (Form f = new Form ()) { 135 Form c1 = new Form (); 136 Form c2 = new Form (); 137 EventLogger log1 = new EventLogger (c1); 138 EventLogger log2 = new EventLogger (c2); 139 140 f.IsMdiContainer = true; 141 f.ShowInTaskbar = false; 142 c2.MdiParent = c1.MdiParent = f; 143 144 c1.Show (); 145 c2.Show (); 146 Assert.AreEqual (0, log1.CountEvents ("Activated"), "#A1"); 147 Assert.AreEqual (0, log2.CountEvents ("Activated"), "#A2"); 148 149 f.Show (); 150 Assert.AreEqual (1, log1.CountEvents ("Activated"), "#B1"); 151 Assert.AreEqual (1, log2.CountEvents ("Activated"), "#B2"); 152 153 c1.Show (); 154 c2.Show (); 155 Assert.AreEqual (1, log1.CountEvents ("Activated"), "#C1"); 156 Assert.AreEqual (1, log2.CountEvents ("Activated"), "#C2"); 157 158 c1.Activate (); 159 Assert.AreEqual (2, log1.CountEvents ("Activated"), "#D1"); 160 Assert.AreEqual (1, log2.CountEvents ("Activated"), "#D2"); 161 162 c1.Activate (); 163 Assert.AreEqual (2, log1.CountEvents ("Activated"), "#E1"); 164 Assert.AreEqual (1, log2.CountEvents ("Activated"), "#E2"); 165 166 c2.Activate (); 167 Assert.AreEqual (2, log1.CountEvents ("Activated"), "#F1"); 168 Assert.AreEqual (2, log2.CountEvents ("Activated"), "#F2"); 169 170 c1.Activate (); 171 Assert.AreEqual (3, log1.CountEvents ("Activated"), "#G1"); 172 Assert.AreEqual (2, log2.CountEvents ("Activated"), "#G2"); 173 } 174 } 175 176 [Test] ActiveControlTest()177 public void ActiveControlTest () 178 { 179 SetUp (false, false, true); 180 181 main.Show (); 182 183 Assert.IsNull (main.ActiveControl, "#01"); 184 child1.Visible = true; 185 Assert.AreSame (child1, main.ActiveControl, "#02"); 186 child2.Visible = true; 187 Assert.AreSame (child2, main.ActiveControl, "#03"); 188 child3.Visible = true; 189 Assert.AreSame (child3, main.ActiveControl, "#04"); 190 TearDown (); 191 } 192 193 [Test] SelectNextControlTest()194 public void SelectNextControlTest () 195 { 196 SetUp (false, false, true); 197 198 main.Show (); 199 200 child1.Visible = true; 201 child2.Visible = true; 202 child3.Visible = true; 203 204 main.SelectNextControl (main.ActiveControl, true, false, true, true); 205 Assert.AreSame (child1, main.ActiveControl, "#01"); 206 main.SelectNextControl (main.ActiveControl, true, false, true, true); 207 Assert.AreSame (child2, main.ActiveControl, "#02"); 208 main.SelectNextControl (main.ActiveControl, true, false, true, true); 209 Assert.AreSame (child3, main.ActiveControl, "#03"); 210 211 TearDown (); 212 } 213 214 [Test] SelectPreviousControlTest()215 public void SelectPreviousControlTest () 216 { 217 SetUp (false, false, true); 218 219 main.Show (); 220 221 child1.Visible = true; 222 child2.Visible = true; 223 child3.Visible = true; 224 225 main.SelectNextControl (main.ActiveControl, false, false, true, true); 226 Assert.AreSame (child2, main.ActiveControl, "#01"); 227 main.SelectNextControl (main.ActiveControl, false, false, true, true); 228 Assert.AreSame (child1, main.ActiveControl, "#02"); 229 main.SelectNextControl (main.ActiveControl, false, false, true, true); 230 Assert.AreSame (child3, main.ActiveControl, "#03"); 231 232 TearDown (); 233 } 234 235 [TestFixture] 236 public class CloseTest 237 { 238 class ChildForm : Form 239 { ChildForm()240 public ChildForm () 241 { 242 Closed += new EventHandler (ChildForm_Closed); 243 Closing += new CancelEventHandler (ChildForm_Closing); 244 FormClosed += new FormClosedEventHandler (ChildForm_FormClosed); 245 FormClosing += new FormClosingEventHandler (ChildForm_FormClosing); 246 } ChildForm_FormClosing(object sender, FormClosingEventArgs e)247 void ChildForm_FormClosing (object sender, FormClosingEventArgs e) 248 { 249 Assert.IsNotNull (MdiParent, "ChildForm_FormClosing"); 250 } 251 ChildForm_FormClosed(object sender, FormClosedEventArgs e)252 void ChildForm_FormClosed (object sender, FormClosedEventArgs e) 253 { 254 Assert.IsNotNull (MdiParent, "ChildForm_FormClosed"); 255 } ChildForm_Closing(object sender, CancelEventArgs e)256 void ChildForm_Closing (object sender, CancelEventArgs e) 257 { 258 Assert.IsNotNull (MdiParent, "ChildForm_Closing"); 259 } 260 ChildForm_Closed(object sender, EventArgs e)261 void ChildForm_Closed (object sender, EventArgs e) 262 { 263 Assert.IsNotNull (MdiParent, "ChildForm_Closed"); 264 } 265 OnClosed(EventArgs e)266 protected override void OnClosed (EventArgs e) 267 { 268 Assert.IsNotNull (MdiParent, "OnClosed 1"); 269 base.OnClosed (e); 270 Assert.IsNotNull (MdiParent, "OnClosed 2"); 271 } 272 OnClosing(CancelEventArgs e)273 protected override void OnClosing (CancelEventArgs e) 274 { 275 Assert.IsNotNull (MdiParent, "OnClosing 1"); 276 base.OnClosing (e); 277 Assert.IsNotNull (MdiParent, "OnClosing 2"); 278 } 279 280 } 281 [Test] Test()282 public void Test () { 283 using (Form main = new Form ()) { 284 main.IsMdiContainer = true; 285 main.ShowInTaskbar = false; 286 main.Visible = true; 287 288 ChildForm child = new ChildForm (); 289 EventLogger log = new EventLogger (child); 290 child.MdiParent = main; 291 child.Visible = true; 292 child.Close (); 293 294 Assert.AreEqual (1, log.CountEvents ("Closed"), "#01"); 295 Assert.AreEqual (1, log.CountEvents ("Closing"), "#02"); 296 Assert.IsNull (child.MdiParent, "#03"); 297 Assert.AreEqual (0, main.MdiChildren.Length, "#04"); 298 Assert.AreEqual (false, child.IsMdiChild, "#05"); 299 } 300 } 301 } 302 [Test] 303 [Category ("NotWorking")] StartLocationTest()304 public void StartLocationTest () 305 { 306 SetUp (false, false); 307 308 child1.MdiParent = main; 309 child2.MdiParent = main; 310 311 child1.Visible = true; 312 child2.Visible = true; 313 314 main.Show (); 315 316 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 317 Assert.AreEqual (true, "{X=0,Y=0}" != child2.Location.ToString (), "#2"); 318 319 TearDown (); 320 } 321 322 [Test] StartLocationTest2()323 public void StartLocationTest2 () 324 { 325 SetUp (false, false); 326 327 child1.MdiParent = main; 328 child2.MdiParent = main; 329 330 child1.Visible = true; 331 child2.Visible = true; 332 child2.StartPosition = FormStartPosition.Manual; 333 child2.Location = new Point(23, 34); 334 335 main.Show (); 336 337 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 338 Assert.AreEqual ("{X=23,Y=34}",child2.Location.ToString (), "#2"); 339 340 TearDown (); 341 } 342 343 [Test] NewFormShouldAlsoBeMaximized()344 public void NewFormShouldAlsoBeMaximized () 345 { 346 Form parent = new Form (); 347 348 Form child1 = new Form (); 349 Form child2 = new Form (); 350 351 parent.ShowInTaskbar = false; 352 parent.IsMdiContainer = true; 353 parent.ClientSize = new Size (300, 300); 354 355 parent.Show (); 356 357 child1.MdiParent = parent; 358 child1.Show (); 359 360 child1.WindowState = FormWindowState.Maximized; 361 362 child2.MdiParent = parent; 363 child2.ClientSize = new Size (100, 100); 364 child2.Show (); 365 366 Assert.IsTrue (child2.Width > 200, "Width should be maximized"); 367 Assert.IsTrue (child2.Height > 200, "Height should be maximized"); 368 369 parent.Dispose (); 370 } 371 372 [Test] RestoreWithMainMenuStrip()373 public void RestoreWithMainMenuStrip () 374 { 375 Form parent = new Form (); 376 377 Form child1 = new Form (); 378 379 parent.ShowInTaskbar = false; 380 parent.IsMdiContainer = true; 381 parent.ClientSize = new Size (500, 500); 382 383 MenuStrip ms = new MenuStrip (); 384 ms.Items.Add (new ToolStripMenuItem ("main", null, new ToolStripMenuItem ("item1"))); 385 parent.Controls.Add (ms); 386 parent.MainMenuStrip = ms; 387 388 parent.Show (); 389 390 child1.MdiParent = parent; 391 child1.Show (); 392 393 Size s = child1.Size; 394 395 child1.WindowState = FormWindowState.Maximized; 396 child1.WindowState = FormWindowState.Normal; 397 398 Assert.AreEqual (s, child1.Size, "A1"); 399 400 parent.Dispose (); 401 } 402 403 /* These tests are all failing on WinXP with XP Theme. 404 * offset seems to be 22,22 normally, and 22,29 with XP theme. 405 * Find a way to test this reliably. 406 * / 407 [Category("NotWorking")] 408 [Test] 409 public void StartLocationTest1 () 410 { 411 SetUp (false, false); 412 413 child1.MdiParent = main; 414 child2.MdiParent = main; 415 416 child1.Visible = true; 417 child2.Visible = true; 418 419 main.Show (); 420 421 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 422 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2"); 423 424 TearDown (); 425 } 426 427 [Category("NotWorking")] 428 [Test] 429 public void StartLocationTest2 () 430 { 431 SetUp (false, false); 432 433 child1.MdiParent = main; 434 child2.MdiParent = main; 435 436 child1.StartPosition = FormStartPosition.Manual; 437 438 child1.Visible = true; 439 child2.Visible = true; 440 441 main.Show (); 442 443 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 444 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2"); 445 446 TearDown (); 447 } 448 449 450 [Category("NotWorking")] 451 [Test] 452 public void StartLocationTest3 () 453 { 454 SetUp (false, false); 455 456 child1.MdiParent = main; 457 child2.MdiParent = main; 458 459 child2.StartPosition = FormStartPosition.Manual; 460 461 child1.Visible = true; 462 child2.Visible = true; 463 464 main.Show (); 465 466 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 467 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2"); 468 469 TearDown (); 470 } 471 472 [Category("NotWorking")] 473 [Test] 474 public void StartLocationTest4 () 475 { 476 SetUp (false, false); 477 478 child1.MdiParent = main; 479 child2.MdiParent = main; 480 481 child1.StartPosition = FormStartPosition.Manual; 482 child2.StartPosition = FormStartPosition.Manual; 483 484 child1.Visible = true; 485 child2.Visible = true; 486 487 main.Show (); 488 489 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 490 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2"); 491 492 TearDown (); 493 } 494 495 [Category("NotWorking")] 496 [Test] 497 public void StartLocationTest5 () 498 { 499 SetUp (false, false); 500 501 child1.MdiParent = main; 502 child2.MdiParent = main; 503 child3.MdiParent = main; 504 505 child2.StartPosition = FormStartPosition.Manual; 506 507 child1.Visible = true; 508 child2.Visible = true; 509 child3.Visible = true; 510 511 main.Show (); 512 513 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 514 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2"); 515 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3"); 516 517 TearDown (); 518 } 519 520 [Category("NotWorking")] 521 [Test] 522 public void StartLocationTest6 () 523 { 524 SetUp (false, false); 525 526 child1.MdiParent = main; 527 child2.MdiParent = main; 528 child3.MdiParent = main; 529 530 child2.StartPosition = FormStartPosition.CenterParent; 531 532 child1.Visible = true; 533 child2.Visible = true; 534 child3.Visible = true; 535 536 main.Show (); 537 538 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 539 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2"); 540 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3"); 541 542 TearDown (); 543 } 544 545 [Category("NotWorking")] 546 [Test] 547 public void StartLocationTest7 () 548 { 549 SetUp (false, false); 550 551 child1.MdiParent = main; 552 child2.MdiParent = main; 553 child3.MdiParent = main; 554 555 child2.StartPosition = FormStartPosition.CenterScreen; 556 557 child1.Visible = true; 558 child2.Visible = true; 559 child3.Visible = true; 560 561 main.Show (); 562 563 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 564 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2"); 565 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3"); 566 567 TearDown (); 568 } 569 570 [Category("NotWorking")] 571 [Test] 572 public void StartLocationTest8 () 573 { 574 SetUp (false, false); 575 576 child1.MdiParent = main; 577 child2.MdiParent = main; 578 child3.MdiParent = main; 579 580 child2.StartPosition = FormStartPosition.WindowsDefaultBounds; 581 582 child1.Visible = true; 583 child2.Visible = true; 584 child3.Visible = true; 585 586 main.Show (); 587 588 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 589 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2"); 590 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3"); 591 592 TearDown (); 593 } 594 595 [Category("NotWorking")] 596 [Test] 597 public void StartLocationTest9 () 598 { 599 SetUp (false, false); 600 601 child1.MdiParent = main; 602 child2.MdiParent = main; 603 child3.MdiParent = main; 604 605 child2.StartPosition = FormStartPosition.WindowsDefaultLocation; 606 607 child1.Visible = true; 608 child2.Visible = true; 609 child3.Visible = true; 610 611 main.Show (); 612 613 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 614 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2"); 615 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3"); 616 617 TearDown (); 618 } 619 620 [Category("NotWorking")] 621 [Test] 622 public void StartLocationTest10 () 623 { 624 SetUp (false, false); 625 626 child1.MdiParent = main; 627 child2.MdiParent = main; 628 child3.MdiParent = main; 629 630 child2.StartPosition = FormStartPosition.Manual; 631 child2.Location = new Point (123, 123); 632 633 child1.Visible = true; 634 child2.Visible = true; 635 child3.Visible = true; 636 637 main.Show (); 638 639 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 640 Assert.AreEqual ("{X=123,Y=123}", child2.Location.ToString (), "#2"); 641 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3"); 642 643 TearDown (); 644 } 645 646 [Category("NotWorking")] 647 [Test] 648 public void StartLocationTest11 () 649 { 650 SetUp (false, false); 651 652 child1.MdiParent = main; 653 child2.MdiParent = main; 654 child3.MdiParent = main; 655 656 child2.Location = new Point (123, 123); 657 658 Assert.AreEqual ("{X=123,Y=123}", child2.Location.ToString (), "#0"); 659 660 child1.Visible = true; 661 child2.Visible = true; 662 child3.Visible = true; 663 664 Assert.AreEqual ("{X=123,Y=123}", child2.Location.ToString (), "#0"); 665 666 main.Show (); 667 668 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 669 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2"); 670 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3"); 671 672 TearDown (); 673 } 674 675 [Category("NotWorking")] 676 [Test] 677 public void StartLocationTest12 () 678 { 679 SetUp (false, false); 680 681 child1.MdiParent = main; 682 child2.MdiParent = main; 683 child3.MdiParent = main; 684 685 child1.Visible = true; 686 //child2.Visible = true; 687 child3.Visible = true; 688 689 main.Show (); 690 691 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 692 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2"); 693 Assert.AreEqual ("{X=22,Y=22}", child3.Location.ToString (), "#3"); 694 695 child2.Visible = true; 696 Assert.AreEqual ("{X=44,Y=44}", child2.Location.ToString (), "#4"); 697 698 child1.Visible = false; 699 child1.Visible = true; 700 Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#1"); 701 702 TearDown (); 703 } 704 705 [Category("NotWorking")] 706 [Test] 707 public void StartLocationTest13 () 708 { 709 SetUp (false, false); 710 711 child1.MdiParent = main; 712 child2.MdiParent = main; 713 child3.MdiParent = main; 714 715 child1.Visible = true; 716 //child2.Visible = true; 717 child3.Visible = true; 718 719 main.Show (); 720 721 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 722 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2"); 723 Assert.AreEqual ("{X=22,Y=22}", child3.Location.ToString (), "#3"); 724 725 child2.Visible = true; 726 Assert.AreEqual ("{X=44,Y=44}", child2.Location.ToString (), "#4"); 727 728 child1.Visible = false; 729 child1.Visible = true; 730 Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#5"); 731 732 child3.Visible = true; 733 Assert.AreEqual ("{X=22,Y=22}", child3.Location.ToString (), "#6"); 734 735 // MDI Child size does not seem to affect layout. 736 // Size 500,500 737 child2.Visible = false; 738 child2.Size = new Size (500, 500); 739 child2.Visible = true; 740 Assert.AreEqual ("{X=88,Y=88}", child2.Location.ToString (), "#7"); 741 742 child2.Visible = false; 743 child2.Visible = true; 744 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#8"); 745 746 child2.Visible = false; 747 child2.Visible = true; 748 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#9"); 749 750 // Size 5,5 751 child2.Visible = false; 752 child2.Size = new Size (5, 5); 753 child2.Visible = true; 754 Assert.AreEqual ("{X=44,Y=44}", child2.Location.ToString (), "#10"); 755 756 child2.Visible = false; 757 child2.Visible = true; 758 Assert.AreEqual ("{X=66,Y=66}", child2.Location.ToString (), "#11"); 759 760 child2.Visible = false; 761 child2.Visible = true; 762 Assert.AreEqual ("{X=88,Y=88}", child2.Location.ToString (), "#12"); 763 764 child2.Visible = false; 765 child2.Visible = true; 766 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#13"); 767 768 TearDown (); 769 } 770 771 [Category("NotWorking")] 772 [Test] 773 public void StartLocationTest14 () 774 { 775 SetUp (false, false); 776 777 child1.MdiParent = main; 778 child2.MdiParent = main; 779 child3.MdiParent = main; 780 781 child2.StartPosition = FormStartPosition.Manual; 782 child2.Location = new Point (44, 44); 783 child1.Visible = true; 784 child2.Visible = true; 785 child3.Visible = true; 786 787 main.Show (); 788 789 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 790 Assert.AreEqual ("{X=44,Y=44}", child2.Location.ToString (), "#2"); 791 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3"); 792 793 child1.Visible = false; 794 child1.Visible = true; 795 Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#4"); 796 797 TearDown (); 798 } 799 800 [Category("NotWorking")] 801 [Test] 802 public void StartLocationTest15 () 803 { 804 SetUp (false, false); 805 806 child1.MdiParent = main; 807 child2.MdiParent = main; 808 child3.MdiParent = main; 809 810 main.Show (); 811 812 child1.Visible = true; 813 child2.Visible = true; 814 child2.Location = new Point (22, 44); 815 child3.Visible = true; 816 817 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 818 Assert.AreEqual ("{X=22,Y=44}", child2.Location.ToString (), "#2"); 819 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3"); 820 821 child1.Visible = false; 822 child1.Visible = true; 823 Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#4"); 824 825 TearDown (); 826 } 827 828 [Category("NotWorking")] 829 [Test] 830 public void StartLocationTest16 () 831 { 832 SetUp (false, false); 833 834 child1.MdiParent = main; 835 child2.MdiParent = main; 836 child3.MdiParent = main; 837 838 child1.Visible = true; 839 child2.Visible = true; 840 child2.Location = new Point (22, 44); 841 child3.Visible = true; 842 843 main.Show (); 844 845 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 846 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2"); 847 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#3"); 848 849 child1.Visible = false; 850 child1.Visible = true; 851 Assert.AreEqual ("{X=66,Y=66}", child1.Location.ToString (), "#4"); 852 853 TearDown (); 854 } 855 856 [Category("NotWorking")] 857 [Test] 858 public void StartLocationTest17 () 859 { 860 SetUp (false, false); 861 862 child1.MdiParent = main; 863 child2.MdiParent = main; 864 child3.MdiParent = main; 865 866 child1.Visible = true; 867 child2.Visible = true; 868 869 main.Show (); 870 871 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 872 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2"); 873 Assert.AreEqual ("{X=0,Y=0}", child3.Location.ToString (), "#3"); 874 875 child2.Visible = false; 876 child3.Visible = true; 877 878 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#4"); 879 880 TearDown (); 881 } 882 883 [Category("NotWorking")] 884 [Test] 885 public void StartLocationTest18 () 886 { 887 SetUp (false, false); 888 889 child1.MdiParent = main; 890 child2.MdiParent = main; 891 child3.MdiParent = main; 892 893 child1.Visible = true; 894 child2.Visible = true; 895 896 main.Show (); 897 898 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 899 Assert.AreEqual ("{X=22,Y=22}", child2.Location.ToString (), "#2"); 900 Assert.AreEqual ("{X=0,Y=0}", child3.Location.ToString (), "#3"); 901 902 child2.Visible = false; 903 child2.Close (); 904 child2.Dispose (); 905 child2 = null; 906 907 child3.Visible = true; 908 909 Assert.AreEqual ("{X=44,Y=44}", child3.Location.ToString (), "#4"); 910 911 TearDown (); 912 } 913 914 [Category("NotWorking")] 915 [Test] 916 public void StartLocationTest19 () 917 { 918 SetUp (false, false); 919 920 child1.MdiParent = main; 921 child2.MdiParent = main; 922 child3.MdiParent = main; 923 924 child1.Visible = true; 925 child2.Visible = true; 926 child3.Visible = true; 927 928 child1.StartPosition = FormStartPosition.Manual; 929 child2.StartPosition = FormStartPosition.Manual; 930 child3.StartPosition = FormStartPosition.Manual; 931 932 main.Show (); 933 934 Assert.AreEqual ("{X=0,Y=0}", child1.Location.ToString (), "#1"); 935 Assert.AreEqual ("{X=0,Y=0}", child2.Location.ToString (), "#2"); 936 Assert.AreEqual ("{X=0,Y=0}", child3.Location.ToString (), "#3"); 937 938 TearDown (); 939 } 940 */ 941 [Test] StartSizeTest1()942 public void StartSizeTest1 () 943 { 944 SetUp (false, false); 945 946 child1.MdiParent = main; 947 child2.MdiParent = main; 948 child3.MdiParent = main; 949 950 main.Show (); 951 952 Assert.AreEqual ("{Width=300, Height=300}", main.Size.ToString (), "#1"); 953 Assert.AreEqual ("{Width=300, Height=300}", child1.Size.ToString (), "#2"); 954 Assert.AreEqual ("{Width=300, Height=300}", child2.Size.ToString (), "#3"); 955 Assert.AreEqual ("{Width=300, Height=300}", child3.Size.ToString (), "#4"); 956 957 child1.Visible = true; 958 child2.Visible = true; 959 child3.Visible = true; 960 961 Assert.AreEqual ("{Width=300, Height=300}", main.Size.ToString (), "#1"); 962 Assert.AreEqual ("{Width=300, Height=300}", child1.Size.ToString (), "#2"); 963 Assert.AreEqual ("{Width=300, Height=300}", child2.Size.ToString (), "#3"); 964 Assert.AreEqual ("{Width=300, Height=300}", child3.Size.ToString (), "#4"); 965 966 TearDown (); 967 } 968 969 [Test] IsMdiContainerTest()970 public void IsMdiContainerTest () 971 { 972 SetUp (false, true); 973 974 main.Visible = true; 975 main.Visible = false; 976 977 main.IsMdiContainer = true; 978 979 child1.MdiParent = main; 980 981 main.IsMdiContainer = false; 982 983 Assert.AreSame (null, main.ActiveMdiChild, "#1"); 984 985 main.Visible = true; 986 Assert.AreSame (null, main.ActiveMdiChild, "#2"); 987 988 Assert.AreSame (null, main.MdiParent, "#3"); 989 990 TearDown (); 991 } 992 993 [Category("NotWorking")] 994 [Test] 995 [ExpectedException(typeof(ArgumentException), ExpectedMessage = "Cannot add a top level control to a control.")] AddToControlsTest()996 public void AddToControlsTest () 997 { 998 SetUp (false, true); 999 1000 main.Visible = true; 1001 main.Visible = false; 1002 1003 main.Controls.Add (child1); 1004 1005 TearDown (); 1006 } 1007 1008 [Test] Text()1009 public void Text () 1010 { 1011 Form main = null, child1 = null, child2 = null, child3 = null; 1012 1013 main = new Form (); 1014 main.IsMdiContainer = true; 1015 main.Name = "main"; 1016 main.Text = main.Name; 1017 main.Show(); 1018 1019 Assert.AreEqual ("main", main.Text, "#1"); 1020 1021 child1 = new Form (); 1022 child1.Name = "child1"; 1023 child1.MdiParent = main; 1024 child1.Text = child1.Name; 1025 child1.WindowState = FormWindowState.Maximized; 1026 child1.Show (); 1027 1028 Assert.AreEqual ("main - [child1]", main.Text, "#2"); 1029 1030 child2 = new Form (); 1031 child2.Name = "child2"; 1032 child1.MdiParent = main; 1033 child2.Text = string.Empty; 1034 child2.WindowState = FormWindowState.Maximized; 1035 child2.Show(); 1036 1037 Assert.AreEqual ("main - [child1]", main.Text, "#3"); 1038 1039 child1.Activate(); 1040 Assert.AreEqual ("main - [child1]", main.Text, "#4"); 1041 1042 child1.WindowState = FormWindowState.Minimized; 1043 Assert.AreEqual ("main", main.Text, "#5"); 1044 1045 child2.Activate (); 1046 Assert.AreEqual ("main", main.Text, "#6"); 1047 1048 child2.WindowState = FormWindowState.Maximized; 1049 Assert.AreEqual ("main", main.Text, "#7"); 1050 1051 child3 = new Form (); 1052 child3.Name = "child3"; 1053 child3.MdiParent = main; 1054 child3.Text = child3.Name; 1055 child3.WindowState = FormWindowState.Maximized; 1056 child3.Show (); 1057 1058 Assert.AreEqual ("main - [child3]", main.Text, "#8"); 1059 child3.WindowState = FormWindowState.Normal; 1060 Assert.AreEqual ("main", main.Text, "#9"); 1061 1062 main.Text = string.Empty; 1063 child3.WindowState = FormWindowState.Maximized; 1064 Assert.AreEqual (" - [child3]", main.Text, "#10"); 1065 1066 child3.Text = string.Empty; 1067 Assert.AreEqual (string.Empty, main.Text, "#11"); 1068 1069 main.Close (); 1070 1071 child3.Dispose (); 1072 child2.Dispose (); 1073 child1.Dispose (); 1074 main.Dispose (); 1075 } 1076 1077 [Test] Text_MdiContainer()1078 public void Text_MdiContainer () 1079 { 1080 Form main = new Form (); 1081 main.ShowInTaskbar = false; 1082 main.Text = "main"; 1083 main.IsMdiContainer = true; 1084 main.Show (); 1085 1086 Assert.AreEqual ("main", main.Text, "#1"); 1087 1088 Form child = new Form (); 1089 child.Name = "child"; 1090 child.MdiParent = main; 1091 child.Text = child.Name; 1092 child.WindowState = FormWindowState.Maximized; 1093 child.Show (); 1094 1095 Assert.AreEqual ("main - [child]", main.Text, "#2"); 1096 1097 main.Dispose (); 1098 } 1099 1100 [Test] // bug 80038 Text_ChildClose()1101 public void Text_ChildClose () 1102 { 1103 Form main = new Form (); 1104 main.ShowInTaskbar = false; 1105 main.IsMdiContainer = true; 1106 main.Text = "main"; 1107 main.Show (); 1108 1109 Assert.AreEqual ("main", main.Text, "#1"); 1110 1111 Form child = new Form (); 1112 child.Name = "child"; 1113 child.MdiParent = main; 1114 child.Text = child.Name; 1115 child.WindowState = FormWindowState.Maximized; 1116 child.Show (); 1117 1118 Assert.AreEqual ("main - [child]", main.Text, "#2"); 1119 1120 child.Close (); 1121 Assert.AreEqual ("main", main.Text, "#3"); 1122 1123 main.Dispose (); 1124 } 1125 1126 [Test] Text_Maximized()1127 public void Text_Maximized () 1128 { 1129 Form main = new Form (); 1130 main.IsMdiContainer = true; 1131 main.Name = "main"; 1132 main.Text = main.Name; 1133 main.Show (); 1134 1135 Assert.AreEqual ("main", main.Text, "#1"); 1136 1137 Form child1 = new Form (); 1138 child1.Name = "child1"; 1139 child1.MdiParent = main; 1140 child1.Text = child1.Name; 1141 child1.WindowState = FormWindowState.Maximized; 1142 child1.Show (); 1143 1144 Assert.AreEqual ("main - [child1]", main.Text, "#2"); 1145 1146 Form child2 = new Form (); 1147 child2.Name = "child2"; 1148 child2.MdiParent = main; 1149 child2.Text = child2.Name; 1150 child2.WindowState = FormWindowState.Maximized; 1151 child2.Show (); 1152 1153 Assert.AreEqual ("main - [child2]", main.Text, "#3"); 1154 1155 child1.WindowState = FormWindowState.Maximized; 1156 1157 Assert.AreEqual ("main - [child1]", main.Text, "#4"); 1158 1159 main.Dispose (); 1160 } 1161 1162 [Test] 1163 [Category ("NotWorking")] TopLevelTest()1164 public void TopLevelTest () 1165 { 1166 Form main, child1; 1167 1168 main = new Form (); 1169 main.IsMdiContainer = true; 1170 main.Name = "main"; 1171 1172 child1 = new Form (); 1173 child1.Name = "child1"; 1174 Assert.AreEqual (true, child1.TopLevel, "#01"); 1175 child1.MdiParent = main; 1176 Assert.AreEqual (false, child1.TopLevel, "#02"); 1177 1178 child1.Dispose (); 1179 main.Dispose (); 1180 } 1181 [Test] ActiveMdiChild()1182 public void ActiveMdiChild () 1183 { 1184 Form main, child1, child2; 1185 1186 main = new Form (); 1187 main.IsMdiContainer = true; 1188 main.Name = "main"; 1189 1190 child1 = new Form (); 1191 child1.Name = "child1"; 1192 child1.MdiParent = main; 1193 child1.WindowState = FormWindowState.Maximized; 1194 child1.Show (); 1195 1196 child2 = new Form (); 1197 child2.Name = "child2"; 1198 child2.MdiParent = main; 1199 child2.Show(); 1200 1201 Assert.IsNull (main.ActiveMdiChild, "#1"); 1202 1203 main.Show (); 1204 Assert.AreSame (child2, main.ActiveMdiChild, "#2"); 1205 1206 child1.WindowState = FormWindowState.Maximized; 1207 Assert.AreSame (child1, main.ActiveMdiChild, "#3"); 1208 1209 child2.WindowState = FormWindowState.Maximized; 1210 Assert.AreSame (child2, main.ActiveMdiChild, "#4"); 1211 1212 main.Visible = false; 1213 Assert.IsNull (main.ActiveMdiChild, "#5"); 1214 1215 child2.Dispose (); 1216 child1.Dispose (); 1217 main.Dispose (); 1218 main.Close(); 1219 } 1220 1221 [Test] ActiveMdiChild2()1222 public void ActiveMdiChild2 () 1223 { 1224 SetUp (false, false); 1225 1226 child1.MdiParent = main; 1227 child2.MdiParent = main; 1228 1229 main.Show (); 1230 child1.Show (); 1231 child2.Show (); 1232 1233 child1.Activate (); 1234 child1.Visible = false; 1235 1236 Assert.AreSame (child2, main.ActiveMdiChild, "#1"); 1237 1238 TearDown (); 1239 } 1240 1241 [Test] ActiveMdiChild3()1242 public void ActiveMdiChild3 () 1243 { 1244 SetUp (false, false); 1245 1246 child1.MdiParent = main; 1247 child2.MdiParent = main; 1248 1249 main.Visible = true; 1250 main.Visible = false; 1251 1252 Assert.AreSame (null, main.ActiveMdiChild, "#1"); 1253 //child2.Visible = true; This will cause StackOverflowException on MS. 1254 main.Visible = true; 1255 Assert.AreSame (null, main.ActiveMdiChild, "#2"); 1256 1257 TearDown (); 1258 } 1259 [Test] MdiChild_WindowState1()1260 public void MdiChild_WindowState1 () 1261 { 1262 Form main = null, child1 = null, child2 = null; 1263 try { 1264 1265 main = new Form (); 1266 main.IsMdiContainer = true; 1267 main.Name = "main"; 1268 1269 child1 = new Form (); 1270 child1.Name = "child1"; 1271 child1.Text = "child1"; 1272 child1.MdiParent = main; 1273 child1.WindowState = FormWindowState.Maximized; 1274 child1.Show (); 1275 1276 child2 = new Form (); 1277 child2.Name = "child2"; 1278 child2.Text = "child2"; 1279 child2.MdiParent = main; 1280 child2.Show(); 1281 1282 Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1"); 1283 Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#2"); 1284 main.Show (); 1285 Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3"); 1286 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4"); 1287 } finally { 1288 child2.Dispose (); 1289 child1.Dispose (); 1290 main.Dispose (); 1291 main.Close(); 1292 } 1293 } 1294 1295 [Test] MdiChild_WindowState2()1296 public void MdiChild_WindowState2 () 1297 { 1298 Form main = null, child1 = null, child2 = null; 1299 try{ 1300 1301 main = new Form (); 1302 main.Name = "main"; 1303 main.IsMdiContainer = true; 1304 main.Show (); 1305 1306 child1 = new Form (); 1307 child1.Name = "child1"; 1308 child1.MdiParent = main; 1309 child1.WindowState = FormWindowState.Maximized; 1310 child1.Show (); 1311 1312 child2 = new Form (); 1313 child2.Name = "child2"; 1314 child2.MdiParent = main; 1315 child2.Show(); 1316 1317 1318 Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#1"); 1319 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2"); 1320 1321 } finally { 1322 child2.Dispose (); 1323 child1.Dispose (); 1324 main.Dispose (); 1325 main.Close(); 1326 } 1327 } 1328 1329 [Test] MdiChild_WindowState3()1330 public void MdiChild_WindowState3 () 1331 { 1332 Form main = null, child1 = null, child2 = null; 1333 try { 1334 main = new Form (); 1335 main.IsMdiContainer = true; 1336 main.Show (); 1337 1338 child1 = new Form (); 1339 child1.MdiParent = main; 1340 child1.Show (); 1341 1342 child2 = new Form (); 1343 child2.MdiParent = main; 1344 child2.WindowState = FormWindowState.Maximized; 1345 child2.Show(); 1346 1347 Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#1"); 1348 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2"); 1349 1350 } finally { 1351 child2.Dispose (); 1352 child1.Dispose (); 1353 main.Dispose (); 1354 main.Close(); 1355 } 1356 } 1357 1358 [Test] MdiChild_WindowState4()1359 public void MdiChild_WindowState4 () 1360 { 1361 Form main = null, child1 = null, child2 = null; 1362 try { 1363 main = new Form (); 1364 main.IsMdiContainer = true; 1365 main.Show (); 1366 1367 child1 = new Form (); 1368 child1.MdiParent = main; 1369 child1.WindowState = FormWindowState.Maximized; 1370 child1.Show (); 1371 1372 child2 = new Form (); 1373 child2.MdiParent = main; 1374 child2.WindowState = FormWindowState.Maximized; 1375 1376 Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1"); 1377 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2"); 1378 1379 child2.Show(); 1380 1381 Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3"); 1382 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4"); 1383 1384 child2.WindowState = FormWindowState.Normal; 1385 1386 Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#5"); 1387 Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6"); 1388 } finally { 1389 child2.Dispose (); 1390 child1.Dispose (); 1391 main.Dispose (); 1392 main.Close(); 1393 } 1394 } 1395 1396 [Test] MdiChild_WindowState5()1397 public void MdiChild_WindowState5 () 1398 { 1399 Form main = null, child1 = null, child2 = null; 1400 try { 1401 main = new Form (); 1402 main.Name = "main"; 1403 main.IsMdiContainer = true; 1404 main.Show (); 1405 1406 child1 = new Form (); 1407 child1.Name = "child1"; 1408 child1.MdiParent = main; 1409 child1.WindowState = FormWindowState.Maximized; 1410 child1.Show (); 1411 1412 child2 = new Form (); 1413 child2.Name = "child2"; 1414 child2.MdiParent = main; 1415 child2.WindowState = FormWindowState.Maximized; 1416 1417 Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#1"); 1418 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2"); 1419 1420 child2.Show(); 1421 1422 Assert.AreEqual (FormWindowState.Normal, child1.WindowState, "#3"); 1423 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4"); 1424 1425 child1.Activate (); 1426 1427 Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#5"); 1428 Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6"); 1429 } finally { 1430 child2.Dispose (); 1431 child1.Dispose (); 1432 main.Dispose (); 1433 main.Close(); 1434 } 1435 } 1436 1437 [Test] MdiChild_WindowState6()1438 public void MdiChild_WindowState6 () 1439 { 1440 Form main = null, child1 = null, child2 = null; 1441 try { 1442 1443 main = new Form (); 1444 main.Name = "main"; 1445 main.IsMdiContainer = true; 1446 main.Show (); 1447 1448 child1 = new Form (); 1449 child1.Name = "child1"; 1450 child1.MdiParent = main; 1451 child1.WindowState = FormWindowState.Minimized; 1452 child1.Show (); 1453 1454 child2 = new Form (); 1455 child2.Name = "child2"; 1456 child2.MdiParent = main; 1457 child2.WindowState = FormWindowState.Maximized; 1458 1459 Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#1"); 1460 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#2"); 1461 1462 child2.Show(); 1463 1464 Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#3"); 1465 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#4"); 1466 1467 child1.Activate (); 1468 1469 Assert.AreEqual (FormWindowState.Maximized, child1.WindowState, "#5"); 1470 Assert.AreEqual (FormWindowState.Normal, child2.WindowState, "#6"); 1471 1472 child2.Activate (); 1473 1474 Assert.AreEqual (FormWindowState.Minimized, child1.WindowState, "#7"); 1475 Assert.AreEqual (FormWindowState.Maximized, child2.WindowState, "#8"); 1476 } finally { 1477 child2.Dispose (); 1478 child1.Dispose (); 1479 main.Dispose (); 1480 main.Close(); 1481 } 1482 } 1483 1484 [Test] // bug 80995 ChangeClientSizeTest()1485 public void ChangeClientSizeTest () 1486 { 1487 SetUp (false, false, false); 1488 child1.ClientSize = new Size (224, 37); 1489 child1.MdiParent = main; 1490 Assert.AreEqual ("{Width=224, Height=37}", child1.ClientSize.ToString (), "#01"); 1491 child1.Show (); 1492 Assert.AreEqual ("{Width=224, Height=37}", child1.ClientSize.ToString (), "#02"); 1493 main.Show (); 1494 Assert.AreEqual ("{Width=224, Height=37}", child1.ClientSize.ToString (), "#03"); 1495 } 1496 1497 private string events_fired; 1498 1499 [Test] MdiClosingClosedEvent()1500 public void MdiClosingClosedEvent () 1501 { 1502 Form f = new Form (); 1503 f.IsMdiContainer = true; 1504 1505 MdiChild mdi = new MdiChild (); 1506 mdi.can_close = false; 1507 mdi.MdiParent = f; 1508 1509 f.Closing += new CancelEventHandler (f_Closing); 1510 f.Closed += new EventHandler (f_Closed); 1511 mdi.Closing += new CancelEventHandler (mdi_Closing); 1512 mdi.Closed += new EventHandler (mdi_Closed); 1513 1514 f.FormClosing += new FormClosingEventHandler (f_FormClosing); 1515 f.FormClosed += new FormClosedEventHandler (f_FormClosed); 1516 mdi.FormClosing += new FormClosingEventHandler (mdi_FormClosing); 1517 mdi.FormClosed += new FormClosedEventHandler (mdi_FormClosed); 1518 1519 f.Show (); 1520 mdi.Show (); 1521 1522 events_fired = string.Empty; 1523 1524 f.Close (); 1525 1526 Assert.AreEqual ("Child.Closing: True, Child.FormClosing: True, Parent.Closing: True, Parent.FormClosing: True, ", events_fired, "A1-2.0"); 1527 1528 events_fired = string.Empty; 1529 mdi.can_close = true; 1530 f.Close (); 1531 1532 Assert.AreEqual ("Child.Closing: False, Child.FormClosing: False, Parent.Closing: False, Parent.FormClosing: False, Child.Closed, Child.FormClosed, Parent.Closed, Parent.FormClosed, ", events_fired, "A2-2.0"); 1533 1534 f.Dispose (); 1535 } 1536 mdi_FormClosed(object sender, FormClosedEventArgs e)1537 void mdi_FormClosed (object sender, FormClosedEventArgs e) 1538 { 1539 events_fired += "Child.FormClosed, "; 1540 } 1541 mdi_FormClosing(object sender, FormClosingEventArgs e)1542 void mdi_FormClosing (object sender, FormClosingEventArgs e) 1543 { 1544 events_fired += string.Format ("Child.FormClosing: {0}, ", e.Cancel); 1545 } 1546 f_FormClosed(object sender, FormClosedEventArgs e)1547 void f_FormClosed (object sender, FormClosedEventArgs e) 1548 { 1549 events_fired += "Parent.FormClosed, "; 1550 } 1551 f_FormClosing(object sender, FormClosingEventArgs e)1552 void f_FormClosing (object sender, FormClosingEventArgs e) 1553 { 1554 events_fired += string.Format ("Parent.FormClosing: {0}, ", e.Cancel); 1555 } 1556 mdi_Closed(object sender, EventArgs e)1557 void mdi_Closed (object sender, EventArgs e) 1558 { 1559 events_fired += "Child.Closed, "; 1560 } 1561 mdi_Closing(object sender, CancelEventArgs e)1562 void mdi_Closing (object sender, CancelEventArgs e) 1563 { 1564 events_fired += string.Format ("Child.Closing: {0}, ", e.Cancel); 1565 } 1566 f_Closed(object sender, EventArgs e)1567 void f_Closed (object sender, EventArgs e) 1568 { 1569 events_fired += "Parent.Closed, "; 1570 } 1571 f_Closing(object sender, CancelEventArgs e)1572 void f_Closing (object sender, CancelEventArgs e) 1573 { 1574 events_fired += string.Format ("Parent.Closing: {0}, ", e.Cancel); 1575 } 1576 1577 private class MdiChild : Form 1578 { 1579 public bool can_close = false; 1580 MdiChild()1581 public MdiChild () 1582 { 1583 Closing += new CancelEventHandler (MdiChild_Closing); 1584 } 1585 MdiChild_Closing(object sender, CancelEventArgs e)1586 void MdiChild_Closing (object sender, CancelEventArgs e) 1587 { 1588 e.Cancel = !can_close; 1589 } 1590 } 1591 } 1592 } 1593