* TestHelper.cs: Remove extraneous debug message
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / ControlPropertyEventsTest.cs
1 #if NET_2_0
2 using System;
3 using System.Collections.Generic;
4 using System.Text;
5 using NUnit.Framework;
6 using System.Drawing;
7 using System.Windows.Forms;
8 using System.ComponentModel;
9
10 namespace MonoTests.System.Windows.Forms
11 {
12         [TestFixture]
13         public class ControlPropertyEventsTest : TestHelper
14         {
15                 [Test]
16                 public void PropertyAllowDrop ()
17                 {
18                         Control c = new Control ();
19                         EventWatcher ew = new EventWatcher (c);
20
21                         c.AllowDrop = true;
22                         Assert.AreEqual (true, c.AllowDrop, "B1");
23                         Assert.AreEqual (string.Empty, ew.ToString (), "B2");
24
25                         ew.Clear ();
26                         c.AllowDrop = true;
27                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
28                 }
29
30                 [Test]
31                 public void PropertyAnchor ()
32                 {
33                         Control c = new Control ();
34                         EventWatcher ew = new EventWatcher (c);
35
36                         c.Anchor = AnchorStyles.Bottom;
37                         Assert.AreEqual (AnchorStyles.Bottom, c.Anchor, "B1");
38                         Assert.AreEqual (string.Empty, ew.ToString (), "B2");
39
40                         ew.Clear ();
41                         c.Anchor = AnchorStyles.Bottom;
42                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
43                 }
44
45                 //[Test]
46                 //public void PropertyAutoScrollOffset ()
47                 //{
48                 //        Control c = new Control ();
49                 //        EventWatcher ew = new EventWatcher (c);
50
51                 //        c.AutoScrollOffset = new Point (45, 45);
52                 //        Assert.AreEqual (new Point (45, 45), c.AutoScrollOffset, "B1");
53                 //        Assert.AreEqual (string.Empty, ew.ToString (), "B2");
54
55                 //        ew.Clear ();
56                 //        c.AutoScrollOffset = new Point (45, 45);
57                 //        Assert.AreEqual (string.Empty, ew.ToString (), "B3");
58                 //}
59
60                 [Test]
61                 public void PropertyAutoSize ()
62                 {
63                         Control c = new Control ();
64                         EventWatcher ew = new EventWatcher (c);
65
66                         c.AutoSize = true;
67                         Assert.AreEqual (true, c.AutoSize, "B1");
68                         Assert.AreEqual ("AutoSizeChanged", ew.ToString (), "B2");
69
70                         ew.Clear ();
71                         c.AutoSize = true;
72                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
73                 }
74
75                 [Test]
76                 public void PropertyBackColor ()
77                 {
78                         Control c = new Control ();
79                         EventWatcher ew = new EventWatcher (c);
80
81                         c.BackColor = Color.Aquamarine;
82                         Assert.AreEqual (Color.Aquamarine, c.BackColor, "B1");
83                         Assert.AreEqual ("BackColorChanged", ew.ToString (), "B2");
84
85                         ew.Clear ();
86                         c.BackColor = Color.Aquamarine;
87                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
88                 }
89
90                 [Test]
91                 public void PropertyBackgroundImage ()
92                 {
93                         Control c = new Control ();
94                         EventWatcher ew = new EventWatcher (c);
95                         Image i = new Bitmap (5, 5);
96
97                         c.BackgroundImage = i;
98                         Assert.AreSame (i, c.BackgroundImage, "B1");
99                         Assert.AreEqual ("BackgroundImageChanged", ew.ToString (), "B2");
100
101                         ew.Clear ();
102                         c.BackgroundImage = i;
103                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
104                 }
105
106                 [Test]
107                 public void PropertyBackgroundImageLayout ()
108                 {
109                         Control c = new Control ();
110                         EventWatcher ew = new EventWatcher (c);
111
112                         c.BackgroundImageLayout = ImageLayout.Zoom;
113                         Assert.AreEqual (ImageLayout.Zoom, c.BackgroundImageLayout, "B1");
114                         Assert.AreEqual ("BackgroundImageLayoutChanged", ew.ToString (), "B2");
115
116                         ew.Clear ();
117                         c.BackgroundImageLayout = ImageLayout.Zoom;
118                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
119                 }
120
121                 [Test]
122                 public void PropertyBindingContext ()
123                 {
124                         Control c = new Control ();
125                         EventWatcher ew = new EventWatcher (c);
126                         BindingContext b = new BindingContext ();
127
128                         c.BindingContext = b;
129                         Assert.AreSame (b, c.BindingContext, "B1");
130                         Assert.AreEqual ("BindingContextChanged", ew.ToString (), "B2");
131                         
132                         c.BindingContext = b;
133                         Assert.AreEqual ("BindingContextChanged", ew.ToString (), "B3");
134                 }
135
136                 [Test]
137                 public void PropertyBounds ()
138                 {
139                         Control c = new Control ();
140                         EventWatcher ew = new EventWatcher (c);
141
142                         c.Bounds = new Rectangle (0, 0, 5, 5);
143                         Assert.AreEqual (new Rectangle (0, 0, 5, 5), c.Bounds, "B1");
144                         Assert.AreEqual ("Layout;Resize;SizeChanged;ClientSizeChanged", ew.ToString (), "B2");
145
146                         ew.Clear ();
147                         c.Bounds = new Rectangle (0, 0, 5, 5);
148                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
149                 }
150
151                 [Test]
152                 [Ignore ("Setting Capture to true does not hold, getter returns false.")]
153                 public void PropertyCapture ()
154                 {
155                         Control c = new Control ();
156                         EventWatcher ew = new EventWatcher (c);
157
158                         c.Capture = true;
159                         Assert.AreEqual (true, c.Capture, "B1");
160                         Assert.AreEqual ("HandleCreated", ew.ToString (), "B2");
161
162                         ew.Clear ();
163                         c.Capture = true;
164                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
165                 }
166
167                 [Test]
168                 public void PropertyClientSize ()
169                 {
170                         Control c = new Control ();
171                         EventWatcher ew = new EventWatcher (c);
172
173                         c.ClientSize = new Size (5, 5);
174                         Assert.AreEqual (new Size (5, 5), c.ClientSize, "B1");
175                         Assert.AreEqual ("Layout;Resize;SizeChanged;ClientSizeChanged;ClientSizeChanged", ew.ToString (), "B2");
176
177                         ew.Clear ();
178                         c.ClientSize = new Size (5, 5);
179                         Assert.AreEqual ("ClientSizeChanged", ew.ToString (), "B3");
180                 }
181
182                 [Test]
183                 public void PropertyContextMenu ()
184                 {
185                         Control c = new Control ();
186                         EventWatcher ew = new EventWatcher (c);
187                         ContextMenu cm = new ContextMenu ();
188                         
189                         c.ContextMenu = cm;
190                         Assert.AreEqual (cm, c.ContextMenu, "B1");
191                         Assert.AreEqual ("ContextMenuChanged", ew.ToString (), "B2");
192
193                         ew.Clear ();
194                         c.ContextMenu = cm;
195                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
196                 }
197
198                 [Test]
199                 public void PropertyContextMenuStrip ()
200                 {
201                         Control c = new Control ();
202                         EventWatcher ew = new EventWatcher (c);
203                         ContextMenuStrip cm = new ContextMenuStrip ();
204
205                         c.ContextMenuStrip = cm;
206                         Assert.AreEqual (cm, c.ContextMenuStrip, "B1");
207                         Assert.AreEqual ("ContextMenuStripChanged", ew.ToString (), "B2");
208
209                         ew.Clear ();
210                         c.ContextMenuStrip = cm;
211                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
212                 }
213
214                 [Test]
215                 public void PropertyCursor ()
216                 {
217                         Control c = new Control ();
218                         EventWatcher ew = new EventWatcher (c);
219
220                         c.Cursor = Cursors.HSplit;
221                         Assert.AreEqual (Cursors.HSplit, c.Cursor, "B1");
222                         Assert.AreEqual ("CursorChanged", ew.ToString (), "B2");
223
224                         ew.Clear ();
225                         c.Cursor = Cursors.HSplit;
226                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
227                 }
228
229                 [Test]
230                 public void PropertyDock ()
231                 {
232                         Control c = new Control ();
233                         EventWatcher ew = new EventWatcher (c);
234
235                         c.Dock = DockStyle.Fill;
236                         Assert.AreEqual (DockStyle.Fill, c.Dock, "B1");
237                         Assert.AreEqual ("DockChanged", ew.ToString (), "B2");
238
239                         ew.Clear ();
240                         c.Dock = DockStyle.Fill;
241                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
242                 }
243
244                 [Test]
245                 public void PropertyEnabled ()
246                 {
247                         Control c = new Control ();
248                         EventWatcher ew = new EventWatcher (c);
249
250                         c.Enabled = false;
251                         Assert.AreEqual (false, c.Enabled, "B1");
252                         Assert.AreEqual ("EnabledChanged", ew.ToString (), "B2");
253
254                         ew.Clear ();
255                         c.Enabled = false;
256                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
257                 }
258
259                 [Test]
260                 public void PropertyFont ()
261                 {
262                         Control c = new Control ();
263                         EventWatcher ew = new EventWatcher (c);
264                         Font f = new Font ("Arial", 14);
265                         
266                         c.Font = f;
267                         Assert.AreEqual (f, c.Font, "B1");
268                         Assert.AreEqual ("FontChanged;Layout", ew.ToString (), "B2");
269
270                         ew.Clear ();
271                         c.Font = f;
272                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
273                 }
274
275                 [Test]
276                 public void PropertyForeColor ()
277                 {
278                         Control c = new Control ();
279                         EventWatcher ew = new EventWatcher (c);
280
281                         c.ForeColor = Color.Peru;
282                         Assert.AreEqual (Color.Peru, c.ForeColor, "B1");
283                         Assert.AreEqual ("ForeColorChanged", ew.ToString (), "B2");
284
285                         ew.Clear ();
286                         c.ForeColor = Color.Peru;
287                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
288                 }
289
290                 [Test]
291                 public void PropertyHeight ()
292                 {
293                         Control c = new Control ();
294                         EventWatcher ew = new EventWatcher (c);
295
296                         c.Height = 27;
297                         Assert.AreEqual (27, c.Height, "B1");
298                         Assert.AreEqual ("Layout;Resize;SizeChanged;ClientSizeChanged", ew.ToString (), "B2");
299
300                         ew.Clear ();
301                         c.Height = 27;
302                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
303                 }
304
305                 [Test]
306                 public void PropertyImeMode ()
307                 {
308                         Control c = new Control ();
309                         EventWatcher ew = new EventWatcher (c);
310
311                         c.ImeMode = ImeMode.Hiragana;
312                         Assert.AreEqual (ImeMode.Hiragana, c.ImeMode, "B1");
313                         Assert.AreEqual ("ImeModeChanged", ew.ToString (), "B2");
314
315                         ew.Clear ();
316                         c.ImeMode = ImeMode.Hiragana;
317                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
318                 }
319
320                 [Test]
321                 public void PropertyLeft ()
322                 {
323                         Control c = new Control ();
324                         EventWatcher ew = new EventWatcher (c);
325
326                         c.Left = 27;
327                         Assert.AreEqual (27, c.Left, "B1");
328                         Assert.AreEqual ("Move;LocationChanged", ew.ToString (), "B2");
329
330                         ew.Clear ();
331                         c.Left = 27;
332                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
333                 }
334
335                 [Test]
336                 public void PropertyLocation ()
337                 {
338                         Control c = new Control ();
339                         EventWatcher ew = new EventWatcher (c);
340
341                         c.Location = new Point (5, 5);
342                         Assert.AreEqual (new Point (5, 5), c.Location, "B1");
343                         Assert.AreEqual ("Move;LocationChanged", ew.ToString (), "B2");
344
345                         ew.Clear ();
346                         c.Location = new Point (5, 5);
347                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
348                 }
349
350                 [Test]
351                 public void PropertyMargin ()
352                 {
353                         Control c = new Control ();
354                         EventWatcher ew = new EventWatcher (c);
355
356                         c.Margin = new Padding (5);
357                         Assert.AreEqual (new Padding (5), c.Margin, "B1");
358                         Assert.AreEqual ("MarginChanged", ew.ToString (), "B2");
359
360                         ew.Clear ();
361                         c.Margin = new Padding (5);
362                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
363                 }
364
365                 [Test]
366                 public void PropertyMaximumSize ()
367                 {
368                         Control c = new Control ();
369                         EventWatcher ew = new EventWatcher (c);
370
371                         c.MaximumSize = new Size (5, 5);
372                         Assert.AreEqual (new Size (5, 5), c.MaximumSize, "B1");
373                         Assert.AreEqual (string.Empty, ew.ToString (), "B2");
374
375                         ew.Clear ();
376                         c.MaximumSize = new Size (5, 5);
377                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
378                 }
379
380                 [Test]
381                 public void PropertyMinimumSize ()
382                 {
383                         Control c = new Control ();
384                         EventWatcher ew = new EventWatcher (c);
385
386                         c.MinimumSize = new Size (5, 5);
387                         Assert.AreEqual (new Size (5, 5), c.MinimumSize, "B1");
388                         Assert.AreEqual ("Layout;Resize;SizeChanged;ClientSizeChanged", ew.ToString (), "B2");
389
390                         ew.Clear ();
391                         c.MinimumSize = new Size (5, 5);
392                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
393                 }
394
395                 [Test]
396                 public void PropertyName ()
397                 {
398                         Control c = new Control ();
399                         EventWatcher ew = new EventWatcher (c);
400
401                         c.Name = "Bob";
402                         Assert.AreEqual ("Bob", c.Name, "B1");
403                         Assert.AreEqual (string.Empty, ew.ToString (), "B2");
404
405                         ew.Clear ();
406                         c.Name = "Bob";
407                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
408                 }
409
410                 [Test]
411                 public void PropertyPadding ()
412                 {
413                         Control c = new Control ();
414                         EventWatcher ew = new EventWatcher (c);
415
416                         c.Padding = new Padding (5);
417                         Assert.AreEqual (new Padding (5), c.Padding, "B1");
418                         Assert.AreEqual ("PaddingChanged;Layout", ew.ToString (), "B2");
419
420                         ew.Clear ();
421                         c.Padding = new Padding (5);
422                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
423                 }
424
425                 [Test]
426                 public void PropertyRegion ()
427                 {
428                         Control c = new Control ();
429                         EventWatcher ew = new EventWatcher (c);
430                         Region r = new Region ();
431                         
432                         c.Region = r;
433                         Assert.AreSame (r, c.Region, "B1");
434                         Assert.AreEqual ("RegionChanged", ew.ToString (), "B2");
435
436                         ew.Clear ();
437                         c.Region = r;
438                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
439                 }
440
441                 [Test]
442                 public void PropertyRightToLeft ()
443                 {
444                         Control c = new Control ();
445                         EventWatcher ew = new EventWatcher (c);
446
447                         c.RightToLeft = RightToLeft.Yes;
448                         Assert.AreEqual (RightToLeft.Yes, c.RightToLeft, "B1");
449                         Assert.AreEqual ("RightToLeftChanged;Layout", ew.ToString (), "B2");
450
451                         ew.Clear ();
452                         c.RightToLeft = RightToLeft.Yes;
453                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
454                 }
455
456                 [Test]
457                 public void PropertySize ()
458                 {
459                         Control c = new Control ();
460                         EventWatcher ew = new EventWatcher (c);
461
462                         c.Size = new Size (5, 5);
463                         Assert.AreEqual (new Size (5, 5), c.Size, "B1");
464                         Assert.AreEqual ("Layout;Resize;SizeChanged;ClientSizeChanged", ew.ToString (), "B2");
465
466                         ew.Clear ();
467                         c.Size = new Size (5, 5);
468                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
469                 }
470
471                 [Test]
472                 public void PropertyTabIndex ()
473                 {
474                         Control c = new Control ();
475                         EventWatcher ew = new EventWatcher (c);
476
477                         c.TabIndex = 4;
478                         Assert.AreEqual (4, c.TabIndex, "B1");
479                         Assert.AreEqual ("TabIndexChanged", ew.ToString (), "B2");
480
481                         ew.Clear ();
482                         c.TabIndex = 4;
483                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
484                 }
485
486                 [Test]
487                 public void PropertyTabStop ()
488                 {
489                         Control c = new Control ();
490                         EventWatcher ew = new EventWatcher (c);
491
492                         c.TabStop = false;
493                         Assert.AreEqual (false, c.TabStop, "B1");
494                         Assert.AreEqual ("TabStopChanged", ew.ToString (), "B2");
495
496                         ew.Clear ();
497                         c.TabStop = false;
498                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
499                 }
500
501                 [Test]
502                 public void PropertyTag ()
503                 {
504                         Control c = new Control ();
505                         EventWatcher ew = new EventWatcher (c);
506                         Object o = "Hello";
507
508                         c.Tag = o;
509                         Assert.AreSame (o, c.Tag, "B1");
510                         Assert.AreEqual (string.Empty, ew.ToString (), "B2");
511
512                         ew.Clear ();
513                         c.Tag = o;
514                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
515                 }
516
517                 [Test]
518                 public void PropertyText ()
519                 {
520                         Control c = new Control ();
521                         EventWatcher ew = new EventWatcher (c);
522
523                         c.Text = "Enchilada";
524                         Assert.AreEqual ("Enchilada", c.Text, "B1");
525                         Assert.AreEqual ("TextChanged", ew.ToString (), "B2");
526
527                         ew.Clear ();
528                         c.Text = "Enchilada";
529                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
530                 }
531
532                 [Test]
533                 public void PropertyTop ()
534                 {
535                         Control c = new Control ();
536                         EventWatcher ew = new EventWatcher (c);
537
538                         c.Top = 27;
539                         Assert.AreEqual (27, c.Top, "B1");
540                         Assert.AreEqual ("Move;LocationChanged", ew.ToString (), "B2");
541
542                         ew.Clear ();
543                         c.Top = 27;
544                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
545                 }
546
547                 [Test]
548                 public void PropertyVisible ()
549                 {
550                         Control c = new Control ();
551                         EventWatcher ew = new EventWatcher (c);
552
553                         c.Visible = false;
554                         Assert.AreEqual (false, c.Visible, "B1");
555                         Assert.AreEqual ("VisibleChanged", ew.ToString (), "B2");
556
557                         ew.Clear ();
558                         c.Visible = false;
559                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
560                 }
561
562                 [Test]
563                 public void PropertyWidth ()
564                 {
565                         Control c = new Control ();
566                         EventWatcher ew = new EventWatcher (c);
567
568                         c.Width = 27;
569                         Assert.AreEqual (27, c.Width, "B1");
570                         Assert.AreEqual ("Layout;Resize;SizeChanged;ClientSizeChanged", ew.ToString (), "B2");
571
572                         ew.Clear ();
573                         c.Width = 27;
574                         Assert.AreEqual (string.Empty, ew.ToString (), "B3");
575                 }
576
577                 private class EventWatcher
578                 {
579                         private string events = string.Empty;
580
581                         public EventWatcher (Control c)
582                         {
583                                 c.AutoSizeChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("AutoSizeChanged;"); });
584                                 c.BackColorChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("BackColorChanged;"); });
585                                 c.BackgroundImageChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("BackgroundImageChanged;"); });
586                                 c.BackgroundImageLayoutChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("BackgroundImageLayoutChanged;"); });
587                                 c.BindingContextChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("BindingContextChanged;"); });
588                                 c.CausesValidationChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("CausesValidationChanged;"); });
589                                 c.ChangeUICues += new UICuesEventHandler (delegate (Object obj, UICuesEventArgs e) { events += ("ChangeUICues;"); });
590                                 c.Click += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Click;"); });
591                                 c.ClientSizeChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("ClientSizeChanged;"); });
592                                 c.ContextMenuChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("ContextMenuChanged;"); });
593                                 c.ContextMenuStripChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("ContextMenuStripChanged;"); });
594                                 c.ControlAdded += new ControlEventHandler (delegate (Object obj, ControlEventArgs e) { events += ("ControlAdded;"); });
595                                 c.ControlRemoved += new ControlEventHandler (delegate (Object obj, ControlEventArgs e) { events += ("ControlRemoved;"); });
596                                 c.CursorChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("CursorChanged;"); });
597                                 c.DockChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("DockChanged;"); });
598                                 c.DoubleClick += new EventHandler (delegate (Object obj, EventArgs e) { events += ("DoubleClick;"); });
599                                 c.DragDrop += new DragEventHandler (delegate (Object obj, DragEventArgs e) { events += ("DragDrop;"); });
600                                 c.DragEnter += new DragEventHandler (delegate (Object obj, DragEventArgs e) { events += ("DragEnter;"); });
601                                 c.DragLeave += new EventHandler (delegate (Object obj, EventArgs e) { events += ("DragLeave;"); });
602                                 c.DragOver += new DragEventHandler (delegate (Object obj, DragEventArgs e) { events += ("DragOver;"); });
603                                 c.EnabledChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("EnabledChanged;"); });
604                                 c.Enter += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Enter;"); });
605                                 c.FontChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("FontChanged;"); });
606                                 c.ForeColorChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("ForeColorChanged;"); });
607                                 c.GiveFeedback += new GiveFeedbackEventHandler (delegate (Object obj, GiveFeedbackEventArgs e) { events += ("GiveFeedback;"); });
608                                 c.GotFocus += new EventHandler (delegate (Object obj, EventArgs e) { events += ("GotFocus;"); });
609                                 c.HandleCreated += new EventHandler (delegate (Object obj, EventArgs e) { events += ("HandleCreated;"); });
610                                 c.HandleDestroyed += new EventHandler (delegate (Object obj, EventArgs e) { events += ("HandleDestroyed;"); });
611                                 c.ImeModeChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("ImeModeChanged;"); });
612                                 c.Invalidated += new InvalidateEventHandler (delegate (Object obj, InvalidateEventArgs e) { events += ("Invalidated;"); });
613                                 c.KeyDown += new KeyEventHandler (delegate (Object obj, KeyEventArgs e) { events += ("KeyDown;"); });
614                                 c.KeyPress += new KeyPressEventHandler (delegate (Object obj, KeyPressEventArgs e) { events += ("KeyPress;"); });
615                                 c.KeyUp += new KeyEventHandler (delegate (Object obj, KeyEventArgs e) { events += ("KeyUp;"); });
616                                 c.Layout += new LayoutEventHandler (delegate (Object obj, LayoutEventArgs e) { events += ("Layout;"); });
617                                 c.Leave += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Leave;"); });
618                                 c.LocationChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("LocationChanged;"); });
619                                 c.LostFocus += new EventHandler (delegate (Object obj, EventArgs e) { events += ("LostFocus;"); });
620                                 c.MarginChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("MarginChanged;"); });
621                                 c.MouseCaptureChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("MouseCaptureChanged;"); });
622                                 c.MouseClick += new MouseEventHandler (delegate (Object obj, MouseEventArgs e) { events += ("MouseClick;"); });
623                                 c.MouseDoubleClick += new MouseEventHandler (delegate (Object obj, MouseEventArgs e) { events += ("MouseDoubleClick;"); });
624                                 c.MouseDown += new MouseEventHandler (delegate (Object obj, MouseEventArgs e) { events += ("MouseDown;"); });
625                                 c.MouseEnter += new EventHandler (delegate (Object obj, EventArgs e) { events += ("MouseEnter;"); });
626                                 c.MouseLeave += new EventHandler (delegate (Object obj, EventArgs e) { events += ("MouseLeave;"); });
627                                 c.MouseMove += new MouseEventHandler (delegate (Object obj, MouseEventArgs e) { events += ("MouseMove;"); });
628                                 c.MouseUp += new MouseEventHandler (delegate (Object obj, MouseEventArgs e) { events += ("MouseUp;"); });
629                                 c.MouseWheel += new MouseEventHandler (delegate (Object obj, MouseEventArgs e) { events += ("MouseWheel;"); });
630                                 c.Move += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Move;"); });
631                                 c.PaddingChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("PaddingChanged;"); });
632                                 c.Paint += new PaintEventHandler (delegate (Object obj, PaintEventArgs e) { events += ("Paint;"); });
633                                 c.ParentChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("ParentChanged;"); });
634                                 c.PreviewKeyDown += new PreviewKeyDownEventHandler (delegate (Object obj, PreviewKeyDownEventArgs e) { events += ("PreviewKeyDown;"); });
635                                 c.QueryAccessibilityHelp += new QueryAccessibilityHelpEventHandler (delegate (Object obj, QueryAccessibilityHelpEventArgs e) { events += ("QueryAccessibilityHelp;"); });
636                                 c.QueryContinueDrag += new QueryContinueDragEventHandler (delegate (Object obj, QueryContinueDragEventArgs e) { events += ("QueryContinueDrag;"); });
637                                 c.RegionChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("RegionChanged;"); });
638                                 c.Resize += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Resize;"); });
639                                 c.RightToLeftChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("RightToLeftChanged;"); });
640                                 c.SizeChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("SizeChanged;"); });
641                                 c.StyleChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("StyleChanged;"); });
642                                 c.SystemColorsChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("SystemColorsChanged;"); });
643                                 c.TabIndexChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("TabIndexChanged;"); });
644                                 c.TabStopChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("TabStopChanged;"); });
645                                 c.TextChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("TextChanged;"); });
646                                 c.Validated += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Validated;"); });
647                                 c.Validating += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Validating;"); });
648                                 c.VisibleChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("VisibleChanged;"); });
649                         }
650
651                         public override string ToString ()
652                         {
653                                 return events.TrimEnd (';');
654                         }
655
656                         public void Clear ()
657                         {
658                                 events = string.Empty;
659                         }
660                 }
661
662                 private class ExposeProtectedProperties : Control
663                 {
664                         //public new bool CanRaiseEvents { get { return base.CanRaiseEvents; } }
665                         public new Cursor DefaultCursor { get { return base.DefaultCursor; } }
666                         public new Size DefaultMaximumSize { get { return base.DefaultMaximumSize; } }
667                         public new Size DefaultMinimumSize { get { return base.DefaultMinimumSize; } }
668                         public new Padding DefaultPadding { get { return base.DefaultPadding; } }
669                 }
670         }
671 }
672 #endif