2002-10-18 DennisHayes <dennish@raytek.com>
[mono.git] / mcs / class / System.Windows.Forms / System.Windows.Forms / Control.cs
1     //\r
2     // System.Windows.Forms.Control.cs\r
3     //\r
4     // Author:\r
5     //   stubbed out by Jaak Simm (jaaksimm@firm.ee)\r
6     //  Dennis Hayes (dennish@rayetk.com)\r
7     //   WINELib implementation started by John Sohn (jsohn@columbus.rr.com)\r
8     //\r
9     // (C) Ximian, Inc., 2002\r
10     //\r
11     \r
12     using System.ComponentModel;\r
13     using System.Drawing;\r
14     using System.Collections;\r
15     \r
16     namespace System.Windows.Forms {\r
17     \r
18         /// <summary>\r
19         /// Defines the base class for controls, which are components with \r
20         /// visual representation.\r
21         /// </summary>\r
22         \r
23         public class Control : Component , ISynchronizeInvoke, IWin32Window {\r
24     \r
25                 // Helper NativeWindow class to dispatch messages back\r
26                 // to the Control class\r
27                 protected class ControlNativeWindow : NativeWindow {\r
28     \r
29                         private Control control;\r
30     \r
31                         public ControlNativeWindow (Control control) : base() {\r
32                                 this.control = control;\r
33                         }\r
34     \r
35                         protected override void WndProc (ref Message m) {\r
36                                 base.WndProc (ref m);\r
37     \r
38                                 control.WndProc (ref m);\r
39                         }\r
40                 }\r
41                 \r
42                 // FIXME: not sure if dervied classes should have access\r
43                 protected ControlNativeWindow window;\r
44                 private ControlCollection childControls;\r
45                 private Control parent;\r
46     \r
47                 // private fields\r
48                 // it seems these are stored in case the window is not created,\r
49                 // corresponding properties (below) need to check if window\r
50                 // is created or not and react accordingly\r
51                 string accessibleDefaultActionDescription;\r
52                 string accessibleDescription;\r
53                 string accessibleName;\r
54                 AccessibleRole accessibleRole;\r
55                 bool allowDrop;\r
56                 AnchorStyles anchor;\r
57                 Color backColor;\r
58                 Image backgroundImage;\r
59                 //BindingContext bindingContext;\r
60                 Rectangle bounds;\r
61                 bool causesValidation;\r
62                 //ContextMenu contextMenu;\r
63                 DockStyle dock;\r
64                 bool enabled;\r
65                 Font font;\r
66                 Color foreColor;\r
67                 ImeMode imeMode;\r
68                 bool isAccessible;\r
69                 // Point location;  // using bounds to store location\r
70                 string name;\r
71                 Region region;\r
72                 RightToLeft rightToLeft;\r
73                 bool tabStop;\r
74                 string text;\r
75                 bool visible;\r
76     \r
77                 // --- Constructors ---\r
78     \r
79                 //Compact Framework //only Control()\r
80                 public Control ()\r
81                 {\r
82                         CreateControlsInstance ();\r
83     \r
84                         accessibleDefaultActionDescription = null;\r
85                         accessibleDescription = null;\r
86                         accessibleName = null;\r
87                         accessibleRole = AccessibleRole.Default;\r
88                         allowDrop = false;\r
89                         anchor = AnchorStyles.Top | AnchorStyles.Left;\r
90                         //backColor = Control.DefaultBackColor;\r
91                         backgroundImage = null;\r
92                         bounds = new Rectangle();\r
93                         // bindingContext = null;\r
94                         causesValidation = true;\r
95                         // contextMenu = null;\r
96                         dock = DockStyle.None;\r
97                         enabled = true;\r
98                         // font = Control.DefaultFont;\r
99                         // foreColor = Control.DefaultForeColor;\r
100                         imeMode = ImeMode.Inherit;\r
101                         isAccessible = false;\r
102                         // location = new Point (0,0); should be from OS\r
103                         name = "";\r
104                         region = null;\r
105                         rightToLeft = RightToLeft.Inherit;\r
106                         tabStop = false;\r
107                         text = "";\r
108                         visible = true;\r
109                         parent = null;\r
110                         window = null;\r
111                 }\r
112                 \r
113                 // according to docs, the constructors do not create \r
114                 // the (HWND) window\r
115                 public Control (string text) : this() \r
116                 {\r
117                         Text = text;\r
118                         // Win32.SetWindowTextA (Handle, text);\r
119                 }\r
120                 \r
121                 public Control (Control parent, string text) : this (text) \r
122                 {\r
123                         Parent = parent;\r
124                         // Win32.SetParent (Handle, parent.Handle);\r
125                 }\r
126                 \r
127                 public Control (string text, int left, int top, \r
128                                 int width, int height) : this(text) \r
129                 {\r
130                         Left = left;\r
131                         Top = top;\r
132                         Width = width;\r
133                         Height = height;\r
134                         //Win32.SetWindowPos (Handle, (IntPtr) 0, left, top,\r
135                         //          width, height, 0);\r
136                 }\r
137                 \r
138                 public Control (Control parent,string text,int left, int top,\r
139                                 int width,int height) : this (parent, text)\r
140                 {\r
141                         Left = left;\r
142                         Top = top;\r
143                         Width = width;\r
144                         Height = height;\r
145                         // Win32.SetWindowPos (Handle, (IntPtr) 0, left, top,\r
146                         //                  width, height, 0);\r
147                 }\r
148     \r
149                 // for internal use only, create a control class\r
150                 // for an existing, created HWND\r
151                 private Control (IntPtr existingHandle)\r
152                 {\r
153                         window = (ControlNativeWindow) NativeWindow.FromHandle (\r
154                                 existingHandle);\r
155                 }\r
156     \r
157                 // --- Properties ---\r
158                 // Properties only supporting .NET framework, not stubbed out:\r
159                 //  - protected bool RenderRightToLeft {get;}\r
160                 //  - public IWindowTarget WindowTarget {get; set;}\r
161                 //[MonoTODO]\r
162                 //public AccessibleObject AccessibilityObject {\r
163                 //      get {\r
164                 //              throw new NotImplementedException ();\r
165                 //      }\r
166                 //}\r
167     \r
168                 public string AccessibleDefaultActionDescription {\r
169                         get {\r
170                                 return accessibleDefaultActionDescription;\r
171                         }\r
172                         set {\r
173                                 accessibleDefaultActionDescription = value;\r
174                         }\r
175                 }\r
176                 \r
177                 public string AccessibleDescription {\r
178                         get {\r
179                                 return accessibleDescription;\r
180                         }\r
181                         set {\r
182                                 accessibleDescription=value;\r
183                         }\r
184                 }\r
185                 \r
186                 public string AccessibleName {\r
187                         get {\r
188                                 return accessibleName;\r
189                         }\r
190                         set {\r
191                                 accessibleName=value;\r
192                         }\r
193                 }\r
194                 \r
195                 public AccessibleRole AccessibleRole {\r
196                         get {\r
197                                 return accessibleRole;\r
198                         }\r
199                         set {\r
200                                 accessibleRole=value;\r
201                         }\r
202                 }\r
203                 \r
204                 public virtual bool AllowDrop {\r
205                         get {\r
206                                 return allowDrop;\r
207                         }\r
208                         set {\r
209                                 allowDrop=value;\r
210                         }\r
211                 }\r
212         \r
213                 public virtual AnchorStyles Anchor {\r
214                         get {\r
215                                 return anchor;\r
216                         }\r
217                         set {\r
218                                 anchor=value;\r
219                         }\r
220                 }\r
221                 \r
222                 //Compact Framework\r
223                 public virtual Color BackColor {\r
224                         get {\r
225                                 if (IsHandleCreated) {\r
226                                         IntPtr dc = Win32.GetDC (Handle);\r
227                                         uint bgColor = Win32.GetBkColor (dc);\r
228                                         Win32.ReleaseDC (Handle, dc);\r
229                                         int r = (int) (bgColor & 0xFF);\r
230                                         int g = (int) ((bgColor >> 8) & 0xFF);\r
231                                         int b = (int) ((bgColor >> 16) & 0xFF);\r
232                                         return Color.FromArgb (r, g, b);\r
233                                 }  else return backColor;\r
234                         }\r
235                         set {\r
236                                 backColor = value;\r
237                                 if (IsHandleCreated) {\r
238                                         IntPtr dc = Win32.GetDC (Handle);\r
239                                         Win32.SetBkColor (dc, (uint) value.ToArgb());\r
240                                         Win32.ReleaseDC (Handle, dc);\r
241                                 }\r
242                         }\r
243                 }\r
244                 \r
245                 public virtual Image BackgroundImage {\r
246                         get {\r
247                                 return backgroundImage;\r
248                         }\r
249                         set {\r
250                                 backgroundImage = value;\r
251                                 // FIXME: force redraw\r
252                         }\r
253                 }\r
254     \r
255                 // waiting for BindingContext\r
256                 //public virtual BindingContext BindingContext {\r
257                 //      get {\r
258                 //              //return bindingContext;\r
259                 //              throw new NotImplementedException ();\r
260                 //      }\r
261                 //      set {\r
262                 //              //bindingContext=value;\r
263                 //              throw new NotImplementedException ();\r
264                 //      }\r
265                 //}\r
266                 \r
267                 //Compact Framework\r
268                 public int Bottom {\r
269                         get {\r
270                                 return Top + Height;\r
271                         }\r
272                 }\r
273                 \r
274                 //Compact Framework\r
275                 public Rectangle Bounds {\r
276                         get {\r
277                                 if (IsHandleCreated) {\r
278                                         Win32.RECT rect = new Win32.RECT();\r
279                                         Win32.GetWindowRect (Handle, ref rect);\r
280                                         return new Rectangle ((int) rect.left, \r
281                                                               (int) rect.top,\r
282                                                               (int) rect.right, \r
283                                                               (int) rect.bottom);\r
284                                 } else return bounds;\r
285                         }\r
286                         set {\r
287                                 if (IsHandleCreated)\r
288                                         Win32.SetWindowPos (\r
289                                                 Handle, (IntPtr) 0, value.X, value.Y,\r
290                                                 value.Width, value.Height, 0);\r
291                                 else bounds = value;\r
292                         }\r
293                 }\r
294                 \r
295                 public bool CanFocus {\r
296                         get {\r
297                                 if (IsHandleCreated && Visible && Enabled)\r
298                                         return true;\r
299                                 return false;\r
300                         }\r
301                 }\r
302                 \r
303                 [MonoTODO]\r
304                 public bool CanSelect {\r
305                         get {\r
306     //                          if (ControlStyles.Selectable &&\r
307     //                              isContainedInAnotherControl &&\r
308     //                              parentIsVisiable && isVisialbe &&\r
309     //                              parentIsEnabled && isEnabled) {\r
310     //                                  return true;\r
311     //                          }\r
312     //                          return false;\r
313     \r
314                                 throw new NotImplementedException ();\r
315                         }\r
316                 }\r
317                 \r
318                 //Compact Framework\r
319                 public bool Capture {\r
320                         get {\r
321                                 if (IsHandleCreated) {\r
322                                         IntPtr captured = Win32.GetCapture ();\r
323                                         if (Handle == captured) \r
324                                                 return true;\r
325                                 }\r
326                                 return false;\r
327                         }\r
328                         set {\r
329                                 if (IsHandleCreated) {\r
330                                         if (value)\r
331                                                 Win32.SetCapture (Handle);\r
332                                         else {\r
333                                                 IntPtr captured = Win32.GetCapture ();\r
334     \r
335                                                 // if this window is in capture state\r
336                                                 // release it\r
337                                                 if (Handle == captured)\r
338                                                         Win32.ReleaseCapture ();\r
339                                         }\r
340                                 }\r
341                         }\r
342                 }\r
343                 \r
344                 public bool CausesValidation {\r
345                         get {\r
346                                 return causesValidation;\r
347                         }\r
348                         set {\r
349                                 causesValidation=value;\r
350                         }\r
351                 }\r
352                 \r
353                 //Compact Framework\r
354                 public Rectangle ClientRectangle {\r
355                         get {\r
356                                 if (IsHandleCreated) {\r
357                                         Win32.RECT rect = new Win32.RECT();\r
358                                         Win32.GetClientRect (Handle, ref rect);\r
359                                         return new Rectangle ((int) rect.left, \r
360                                                               (int) rect.top,\r
361                                                               (int) rect.right, \r
362                                                               (int) rect.bottom);\r
363                                 }\r
364     \r
365                                 // FIXME: is the correct return value for\r
366                                 // window who's handle is not created\r
367                                 return new Rectangle (0, 0, 0, 0);\r
368                         }\r
369                 }\r
370                 \r
371                 //Compact Framework\r
372                 [MonoTODO]\r
373                 public Size ClientSize {\r
374                         get {\r
375                                 // FIXME: use GetSystemMetrics and/or\r
376                                 // GetClientRect here?\r
377                                 throw new NotImplementedException ();\r
378                         }\r
379                         set {\r
380                                 throw new NotImplementedException ();\r
381                         }\r
382                 }\r
383                 \r
384                 [MonoTODO]\r
385                 public string CompanyName {\r
386                         get {\r
387                                 throw new NotImplementedException ();\r
388                         }\r
389                 }\r
390                 \r
391                 public bool ContainsFocus {\r
392                         get {\r
393                                 if (IsHandleCreated) {\r
394                                         IntPtr focusedWindow = Win32.GetFocus();\r
395                                         if (focusedWindow == Handle)\r
396                                                 return true;\r
397                                 }\r
398                                 return false;\r
399                         }\r
400                 }\r
401                 \r
402                 //Compact Framework\r
403                 //[MonoTODO]\r
404                 //public virtual ContextMenu ContextMenu {\r
405                 //      get {\r
406                 //              //return contextMenu;\r
407                 //              throw new NotImplementedException ();\r
408                 //      }\r
409                 //      set {\r
410                 //              //contextMenu=value;\r
411                 //              throw new NotImplementedException ();\r
412                 //      }\r
413                 //}\r
414                 \r
415                 public ControlCollection Controls {\r
416                         get { return childControls; }\r
417                 }\r
418                 \r
419                 public bool Created {\r
420                         get { \r
421                                 if (Handle != (IntPtr) 0)\r
422                                         return true;\r
423                                 return false;\r
424                         }\r
425                 }\r
426                 \r
427                 protected virtual CreateParams CreateParams {\r
428                         get {\r
429                                 CreateParams createParams = new CreateParams ();\r
430                                 createParams.Caption = Text;\r
431                                 createParams.ClassName = "mono_native_window";\r
432                                 createParams.X = Left;\r
433                                 createParams.Y = Top;\r
434                                 createParams.Width = Width;\r
435                                 createParams.Height = Height;\r
436                                 createParams.ClassStyle = 0;\r
437                                 createParams.ExStyle = 0;\r
438                                 createParams.Param = 0;\r
439                                 \r
440                                 if (parent != null)\r
441                                         createParams.Parent = parent.Handle;\r
442                                 else \r
443                                         createParams.Parent = (IntPtr) 0;\r
444   \r
445                                 createParams.Style = (int) Win32.WS_OVERLAPPEDWINDOW;\r
446   \r
447                                 return createParams;\r
448                         }\r
449                 }\r
450                 \r
451                 [MonoTODO]\r
452                 public virtual Cursor Cursor {\r
453                         get {\r
454                                 throw new NotImplementedException ();\r
455                         }\r
456                         set {\r
457                                 throw new NotImplementedException ();\r
458                         }\r
459                 }\r
460                 \r
461                 //Compact Framework\r
462                 //[MonoTODO]\r
463                 // waiting for BindingContext\r
464                 //public ControlBindingsCollection DataBindings {\r
465                 //      get {\r
466                 //              throw new NotImplementedException ();\r
467                 //      }\r
468                 //}\r
469                 \r
470                 public static Color DefaultBackColor {\r
471                         get {\r
472                                 // FIXME: use GetSystemMetrics?\r
473                                 //return SystemColors.Control;\r
474                                 throw new NotImplementedException ();\r
475                         }\r
476                 }\r
477     \r
478                 //[MonoTODO]\r
479                 // FIXME: use GetSystemMetrics?\r
480                 //public static Font DefaultFont {\r
481                         // FIXME: get current system font from GenericSansSerif\r
482                         //        call ArgumentException not called\r
483                 //      get {\r
484                 //              throw new NotImplementedException ();\r
485                                 //return (FontFamily.GenericSansSerif); \r
486                 //      }\r
487                 //}\r
488                 \r
489                 public static Color DefaultForeColor {\r
490                         get {\r
491                                 // FIXME: use GetSystemMetrics?\r
492                                 //return SystemColors.ControlText;\r
493                                 throw new NotImplementedException ();\r
494                         }\r
495                 }\r
496                 \r
497                 protected virtual ImeMode DefaultImeMode {\r
498                         get {\r
499                                 //return ImeMode.Inherit;\r
500                                 throw new NotImplementedException ();\r
501                         }\r
502                 }\r
503                 \r
504                 [MonoTODO]\r
505                 protected virtual Size DefaultSize {\r
506                         get {\r
507                                 // FIXME: use GetSystemMetrics?\r
508                                 throw new NotImplementedException ();\r
509                         }\r
510                 }\r
511                 \r
512                 public virtual Rectangle DisplayRectangle {\r
513                         get {\r
514                                 return ClientRectangle;\r
515                         }\r
516                 }\r
517                 \r
518                 [MonoTODO]\r
519                 public bool Disposing {\r
520                         get {\r
521                                 throw new NotImplementedException ();\r
522                         }\r
523                 }\r
524                 \r
525                 public virtual DockStyle Dock {\r
526                         get {\r
527                                 return dock;\r
528                         }\r
529                         set {\r
530                                 dock=value;\r
531                         }\r
532                 }\r
533     \r
534                 //Compact Framework\r
535                 public virtual bool Enabled {\r
536                         get {\r
537                                 return Win32.IsWindowEnabled (Handle);\r
538                         }\r
539                         set {\r
540                                 Win32.EnableWindow (Handle, value);\r
541                         }\r
542                 }\r
543                 \r
544                 //Compact Framework\r
545                 public virtual bool Focused {\r
546                         get {\r
547                                 return ContainsFocus;\r
548                         }\r
549                 }\r
550                 \r
551                 //Compact Framework\r
552                 // [MonoTODO]\r
553                 //public virtual Font Font {\r
554                         // CHECKME:\r
555                 //      get {\r
556                                 //return font;\r
557                 //              throw new NotImplementedException ();\r
558                 //      }\r
559                 //      set {\r
560                                 //font=value;\r
561                 //              throw new NotImplementedException ();\r
562                 //      }\r
563                 //}\r
564                 \r
565                 [MonoTODO]\r
566                 protected int FontHeight {\r
567                         get {\r
568                                 throw new NotImplementedException ();\r
569                         }\r
570                         set {\r
571                                 throw new NotImplementedException ();\r
572                         }\r
573                 }\r
574                 \r
575                 //Compact Framework\r
576                 public virtual Color ForeColor {\r
577                         get {\r
578                                 return foreColor;\r
579                         }\r
580                         set {\r
581                                 foreColor = value;\r
582                         }\r
583                 }\r
584                 \r
585                 public bool HasChildren {\r
586                         get {\r
587                                 if (childControls.Count >0) \r
588                                         return true;\r
589                                 return false;\r
590                         }\r
591                 }\r
592                 \r
593                 //Compact Framework\r
594                 public int Height {\r
595                         get {\r
596                                 if (IsHandleCreated) {\r
597                                         // FIXME: GetWindowPos\r
598                                 }\r
599                                 return bounds.Height;\r
600                         }\r
601                         set {\r
602                                 bounds.Height = value;\r
603                                 if (IsHandleCreated) {\r
604                                         // FIXME: SetWindowPos\r
605                                 }\r
606                         }\r
607                 }\r
608                 \r
609                 public ImeMode ImeMode {\r
610                         // CHECKME:\r
611                         get {\r
612                                 return imeMode;\r
613                         }\r
614                         set {\r
615                                 imeMode=value;\r
616                         }\r
617                 }\r
618                 \r
619                 public bool IsAccessible {\r
620                         // CHECKME:\r
621                         get {\r
622                                 return isAccessible;\r
623                         } // default is false\r
624                         set {\r
625                                 isAccessible=value;\r
626                         }\r
627                 }\r
628                 \r
629                 public bool IsDisposed {\r
630                         get {\r
631                                 if (Handle == (IntPtr) 0)\r
632                                         return true;\r
633                                 return false;\r
634                         }\r
635                 }\r
636                 \r
637                 public bool IsHandleCreated {\r
638                         get {\r
639                                 if (Handle != (IntPtr) 0)\r
640                                         return true;\r
641                                 return false;\r
642                         }\r
643                 }\r
644                 \r
645                 //Compact Framework\r
646                 public int Left {\r
647                         get {\r
648                                 if (IsHandleCreated) {\r
649                                         // FIXME: GetWindowPos\r
650                                         return 0;\r
651                                 } else return bounds.X;\r
652                         }\r
653                         set {\r
654                                 bounds.X = value;\r
655  \r
656                                 if (IsHandleCreated) {\r
657                                         // FIXME: SetWindowPos\r
658                                 }\r
659                         }\r
660                 }\r
661                 \r
662                 //Compact Framework\r
663                 public Point Location {\r
664                         // CHECKME:\r
665                         get {\r
666                                 return new Point (Top, Left);\r
667                         }\r
668                         set {\r
669                                 bounds.X = value.X;\r
670                                 bounds.Y = value.Y;\r
671     \r
672                                 if (IsHandleCreated) {\r
673                                         // FIXME: SetWindowPos\r
674                                 }\r
675     \r
676                         }\r
677                 }\r
678                 \r
679                 [MonoTODO]\r
680                 public static Keys ModifierKeys {\r
681                         get {\r
682                                 throw new NotImplementedException ();\r
683                         }\r
684                 }\r
685                 \r
686                 //Compact Framework\r
687                 [MonoTODO]\r
688                 public static MouseButtons MouseButtons {\r
689                         get {\r
690                                 // FIXME: use GetAsycKeyState?\r
691                                 throw new NotImplementedException ();\r
692                         }\r
693                 }\r
694                 \r
695                 //Compact Framework\r
696                 public static Point MousePosition {\r
697                         get {\r
698                                 Win32.POINT point = new Win32.POINT();\r
699                                 Win32.GetCursorPos (ref point);\r
700                                 return new Point ( (int) point.x, (int) point.y);\r
701                         }\r
702                 }\r
703                 \r
704                 public string Name {\r
705                         // CHECKME:\r
706                         get {\r
707                                 return name;\r
708                         }\r
709                         set {\r
710                                 name=value;\r
711                         }\r
712                 }\r
713                 \r
714                 //Compact Framework\r
715                 public Control Parent {\r
716                         get {\r
717                                 return parent;\r
718                                 //IntPtr parent = Win32.GetParent (Handle);\r
719                                 //return FromHandle (parent);\r
720                         }\r
721                         set {\r
722                                 Console.WriteLine ("setting parent");\r
723                                 parent = value;\r
724     \r
725                                 Console.WriteLine ("add ourself to the parents control");\r
726                                 // add ourself to the parents control\r
727                                 parent.Controls.Add (this);\r
728     \r
729                                 Console.WriteLine ("SetParent");\r
730                                 if (IsHandleCreated) {\r
731                                         Console.WriteLine ("Handle created");\r
732                                         Win32.SetParent (Handle, value.Handle);\r
733                                 }\r
734                         }\r
735                 }\r
736                 \r
737                 [MonoTODO]\r
738                 public string ProductName {\r
739                         get {\r
740                                 throw new NotImplementedException ();\r
741                         }\r
742                 }\r
743                 \r
744                 [MonoTODO]\r
745                 public string ProductVersion {\r
746                         get {\r
747                                 throw new NotImplementedException ();\r
748                         }\r
749                 }\r
750                 \r
751                 [MonoTODO]\r
752                 public bool RecreatingHandle {\r
753                         get {\r
754                                 throw new NotImplementedException ();\r
755                         }\r
756                 }\r
757                 \r
758                 public Region Region {\r
759                         // CHECKME:\r
760                         get {\r
761                                 return region;\r
762                         }\r
763                         set {\r
764                                 region=value;\r
765                         }\r
766                 }\r
767                 \r
768                 [MonoTODO]\r
769                 protected bool ResizeRedraw {\r
770                         get {\r
771                                 throw new NotImplementedException ();\r
772                         }\r
773                         set {\r
774                                 throw new NotImplementedException ();\r
775                         }\r
776                 }\r
777                 \r
778                 //Compact Framework\r
779                 public int Right {\r
780                         get {\r
781                                 return Left + Width;\r
782                         }\r
783                 }\r
784                 \r
785                 [MonoTODO]\r
786                 public virtual RightToLeft RightToLeft {\r
787                         // CHECKME:\r
788                         get {\r
789                                 return rightToLeft;\r
790                         }\r
791                         set {\r
792                                 rightToLeft=value;\r
793                         }\r
794                 }\r
795                 \r
796                 [MonoTODO]\r
797                 protected virtual bool ShowFocusCues {\r
798                         get {\r
799                                 throw new NotImplementedException ();\r
800                         }\r
801                 }\r
802                 \r
803                 [MonoTODO]\r
804                 protected bool ShowKeyboardCues {\r
805                         get {\r
806                                 throw new NotImplementedException ();\r
807                         }\r
808                 }\r
809                 \r
810                 [MonoTODO]\r
811                 public override ISite Site {\r
812                         get {\r
813                                 throw new NotImplementedException ();\r
814                         }\r
815                         set {\r
816                                 throw new NotImplementedException ();\r
817                         }\r
818                 }\r
819                 \r
820                 //Compact Framework\r
821                 [MonoTODO]\r
822                 public Size Size {\r
823                         get {\r
824                                 throw new NotImplementedException ();\r
825                         }\r
826                         set {\r
827                                 throw new NotImplementedException ();\r
828                         }\r
829                 }\r
830                 \r
831                 [MonoTODO]\r
832                 public int TabIndex {\r
833                         get {\r
834                                 throw new NotImplementedException ();\r
835                         }\r
836                         set {\r
837                                 throw new NotImplementedException ();\r
838                         }\r
839                 }\r
840                 \r
841                 public bool TabStop {\r
842                         // CHECKME:\r
843                         get {\r
844                                 return tabStop;\r
845                         }\r
846                         set {\r
847                                 tabStop = value;\r
848                         }\r
849                 }\r
850                 \r
851                 [MonoTODO]\r
852                 public object Tag {\r
853                         get {\r
854                                 throw new NotImplementedException ();\r
855                         }\r
856                         set {\r
857                                 throw new NotImplementedException ();\r
858                         }\r
859                 }\r
860                 \r
861                 //Compact Framework\r
862                 public virtual string Text {\r
863                         get {\r
864                                 if (IsHandleCreated) {\r
865                                         String text = "";\r
866                                         int length = Win32.GetWindowTextLengthA (Handle);\r
867                                         Win32.GetWindowTextA (Handle, ref text, length);\r
868                                         return text;\r
869                                 } else return text;\r
870                         }\r
871                         set {\r
872                                 text = value;\r
873     \r
874                                 if (IsHandleCreated)\r
875                                         Win32.SetWindowTextA (Handle, value);\r
876                         }\r
877                 }\r
878                 \r
879                 //Compact Framework\r
880                 public int Top {\r
881                         get {\r
882                                 if (IsHandleCreated) {\r
883                                         // FIXME: GetWindowPos\r
884                                         return 0;\r
885                                 } else return bounds.Top;\r
886                         }\r
887                         set {\r
888                                 bounds.Y = value;\r
889  \r
890                                 if (IsHandleCreated) {\r
891                                         // FIXME: SetWindowPos\r
892                                 }\r
893                         }\r
894                 }\r
895                 \r
896                 [MonoTODO]\r
897                 public Control TopLevelControl {\r
898                         get {\r
899                                 throw new NotImplementedException ();\r
900                         }\r
901                 }\r
902     \r
903                 //Compact Framework\r
904                 public bool Visible {\r
905                         get {\r
906                                 throw new NotImplementedException ();\r
907                         }\r
908                         set {\r
909                                 if (value)\r
910                                         Win32.ShowWindow (\r
911                                                 Handle, Win32.SW_SHOW);\r
912                                 else\r
913                                         Win32.ShowWindow (\r
914                                                 Handle, Win32.SW_HIDE);\r
915                         }\r
916                 }\r
917                 \r
918                 //Compact Framework\r
919                 public int Width {\r
920                         get {\r
921                                 if (IsHandleCreated) {\r
922                                         // FIXME: GetWindowPos\r
923                                 }\r
924                                 return bounds.Width;\r
925                         }\r
926                         set {\r
927                                 bounds.Width = value;\r
928                                 if (IsHandleCreated) {\r
929                                         // FIXME: SetWindowPos\r
930                                 }\r
931                         }\r
932                 }\r
933                 \r
934                 /// --- methods ---\r
935                 /// internal .NET framework supporting methods, not stubbed out:\r
936                 /// - protected virtual void NotifyInvalidate(Rectangle invalidatedArea)\r
937                 /// - protected void RaiseDragEvent(object key,DragEventArgs e);\r
938                 /// - protected void RaiseKeyEvent(object key,KeyEventArgs e);\r
939                 /// - protected void RaiseMouseEvent(object key,MouseEventArgs e);\r
940                 /// - protected void RaisePaintEvent(object key,PaintEventArgs e);\r
941                 /// - protected void ResetMouseEventArgs();\r
942                 \r
943                 [MonoTODO]\r
944                 protected void AccessibilityNotifyClients (\r
945                         AccessibleEvents accEvent,int childID) \r
946                 {\r
947                         throw new NotImplementedException ();\r
948                 }\r
949                 \r
950                 //Compact Framework\r
951                 [MonoTODO]\r
952                 public void BringToFront () \r
953                 {\r
954                         throw new NotImplementedException ();\r
955                 }\r
956                 \r
957                 public bool Contains (Control ctl) \r
958                 {\r
959                         return childControls.Contains (ctl);\r
960                 }\r
961                 \r
962                 public void CreateControl () \r
963                 {\r
964                         CreateHandle ();\r
965                 }\r
966     \r
967                 //[MonoTODO]\r
968                 //AccessibleObject not ready\r
969                 //protected virtual AccessibleObject CreateAccessibilityInstance() {\r
970                 //      throw new NotImplementedException ();\r
971                 //}\r
972                 \r
973                 protected virtual ControlCollection CreateControlsInstance ()\r
974                 {\r
975                         childControls = new ControlCollection (this);\r
976                         return childControls;\r
977                 }\r
978                 \r
979                 //Compact Framework\r
980                 [MonoTODO]\r
981                 public Graphics CreateGraphics () \r
982                 {\r
983                         throw new NotImplementedException ();\r
984                 }\r
985         \r
986                 protected virtual void CreateHandle ()\r
987                 {\r
988                         window = new ControlNativeWindow (this);\r
989                         \r
990                         window.CreateHandle (CreateParams);\r
991                 }\r
992         \r
993                 protected virtual void DefWndProc (ref Message m)\r
994                 {\r
995                         window.DefWndProc(ref m);\r
996                 }\r
997                 \r
998                 protected virtual void DestroyHandle ()\r
999                 {\r
1000                         window.DestroyHandle ();\r
1001                 }\r
1002         \r
1003                 [MonoTODO]\r
1004                 protected override void Dispose (bool disposing) \r
1005                 {\r
1006                         throw new NotImplementedException ();\r
1007                 }\r
1008         \r
1009                 [MonoTODO]\r
1010                 public DragDropEffects DoDragDrop (\r
1011                         object data, DragDropEffects allowedEffects)\r
1012                 {\r
1013                         throw new NotImplementedException ();\r
1014                 }\r
1015         \r
1016                 //public object EndInvoke(IAsyncResult asyncResult):\r
1017                 //look under ISynchronizeInvoke methods\r
1018         \r
1019                 [MonoTODO]\r
1020                 public Form FindForm () \r
1021                 {\r
1022                         throw new NotImplementedException ();\r
1023                 }\r
1024         \r
1025                 //Compact Framework\r
1026                 public bool Focus () \r
1027                 {\r
1028                         if (Win32.SetFocus (Handle) != (IntPtr) 0)\r
1029                                 return true;\r
1030                         return false;\r
1031                 }\r
1032         \r
1033                 [MonoTODO]\r
1034                 public static Control FromChildHandle (IntPtr handle) \r
1035                 {\r
1036                         throw new NotImplementedException ();\r
1037                 }\r
1038         \r
1039                 public static Control FromHandle (IntPtr handle) \r
1040                 {\r
1041                         Control control = new Control (handle);\r
1042                         return control;\r
1043                 }\r
1044         \r
1045                 [MonoTODO]\r
1046                 public Control GetChildAtPoint (Point pt) \r
1047                 {\r
1048                         throw new NotImplementedException ();\r
1049                 }\r
1050         \r
1051                 // [MonoTODO]\r
1052                 //public IContainerControl GetContainerControl () \r
1053                 //{\r
1054                 //      throw new NotImplementedException ();\r
1055                 //}\r
1056                 \r
1057                 [MonoTODO]\r
1058                 public Control GetNextControl (Control ctl, bool forward) \r
1059                 {\r
1060                         throw new NotImplementedException ();\r
1061                 }\r
1062         \r
1063                 [MonoTODO]\r
1064                 protected bool GetStyle (ControlStyles flag) \r
1065                 {\r
1066                         throw new NotImplementedException ();\r
1067                 }\r
1068         \r
1069                 [MonoTODO]\r
1070                 protected bool GetTopLevel () \r
1071                 {\r
1072                         throw new NotImplementedException ();\r
1073                 }\r
1074                 \r
1075                 //Compact Framework\r
1076                 public void Hide ()\r
1077                 {\r
1078                         if (IsHandleCreated)\r
1079                                 Win32.ShowWindow (Handle, Win32.SW_HIDE);\r
1080                 }\r
1081                 \r
1082                 [MonoTODO]\r
1083                 protected virtual void InitLayout () \r
1084                 {\r
1085                         throw new NotImplementedException ();\r
1086                 }\r
1087                 \r
1088                 //Compact Framework\r
1089                 public void Invalidate () \r
1090                 {\r
1091                         if (IsHandleCreated) {\r
1092                                 Win32.RECT rect = (Win32.RECT) null;\r
1093                                 Win32.InvalidateRect (Handle, ref rect, true);\r
1094                         }\r
1095                 }\r
1096                 \r
1097                 [MonoTODO]\r
1098                 public void Invalidate (bool invalidateChildren) \r
1099                 {\r
1100                         throw new NotImplementedException ();\r
1101                 }\r
1102                 \r
1103                 //Compact Framework\r
1104                 public void Invalidate (Rectangle rc) \r
1105                 {\r
1106                         if (IsHandleCreated) {\r
1107                                 Win32.RECT rect = new Win32.RECT();\r
1108                                 rect.left = rc.Left;\r
1109                                 rect.top = rc.Top;\r
1110                                 rect.right = rc.Right;\r
1111                                 rect.bottom = rc.Bottom;\r
1112                                 Win32.InvalidateRect (Handle, ref rect, true);\r
1113                         }\r
1114                 }\r
1115                 \r
1116                 //[MonoTODO]\r
1117                 public void Invalidate(Region region) \r
1118                 {\r
1119                         throw new NotImplementedException ();\r
1120                 }\r
1121                 \r
1122                 [MonoTODO]\r
1123                 public void Invalidate (Rectangle rc, bool invalidateChildren) \r
1124                 {\r
1125                         throw new NotImplementedException ();\r
1126                 }\r
1127                 \r
1128                 //[MonoTODO]\r
1129                 public void Invalidate(Region region,bool invalidateChildren) \r
1130                 {\r
1131                         throw new NotImplementedException ();\r
1132                 }\r
1133                 \r
1134                 [MonoTODO]\r
1135                 protected void InvokeGotFocus (Control toInvoke, EventArgs e) \r
1136                 {\r
1137                         throw new NotImplementedException ();\r
1138                 }\r
1139                 \r
1140                 [MonoTODO]\r
1141                 protected void InvokeLostFocus (Control toInvoke, EventArgs e) \r
1142                 {\r
1143                         throw new NotImplementedException ();\r
1144                 }\r
1145                 \r
1146                 [MonoTODO]\r
1147                 protected void InvokeOnClick (Control toInvoke, EventArgs e) \r
1148                 {\r
1149                         throw new NotImplementedException ();\r
1150                 }\r
1151                 \r
1152                 [MonoTODO]\r
1153                 protected void InvokePaint (Control c, PaintEventArgs e) \r
1154                 {\r
1155                         throw new NotImplementedException ();\r
1156                 }\r
1157                 \r
1158                 [MonoTODO]\r
1159                 protected void InvokePaintBackground (\r
1160                         Control c,PaintEventArgs e) \r
1161                 {\r
1162                         throw new NotImplementedException ();\r
1163                 }\r
1164                 \r
1165                 [MonoTODO]\r
1166                 protected virtual bool IsInputChar (char charCode)\r
1167                 {\r
1168                         throw new NotImplementedException ();\r
1169                 }\r
1170                 \r
1171                 [MonoTODO]\r
1172                 protected virtual bool IsInputKey (Keys keyData) \r
1173                 {\r
1174                         throw new NotImplementedException ();\r
1175                 }\r
1176                 \r
1177                 [MonoTODO]\r
1178                 public static bool IsMnemonic (char charCode,string text)\r
1179                 {\r
1180                         throw new NotImplementedException ();\r
1181                 }\r
1182                 \r
1183                 // methods used with events:\r
1184                 protected virtual void OnBackColorChanged (EventArgs e)\r
1185                 {\r
1186                         if (BackColorChanged != null)\r
1187                                 BackColorChanged (this, e);\r
1188                 }\r
1189                 \r
1190                 protected virtual void OnBackgroundImageChanged (EventArgs e)\r
1191                 {\r
1192                         if (BackgroundImageChanged != null) \r
1193                                 BackgroundImageChanged (this, e);\r
1194                 }\r
1195                 \r
1196                 protected virtual void OnBindingContextChanged (EventArgs e)\r
1197                 {\r
1198                         if (BindingContextChanged != null)\r
1199                                 BindingContextChanged (this, e);\r
1200                 }\r
1201                 \r
1202                 protected virtual void OnCausesValidationChanged (EventArgs e)\r
1203                 {\r
1204                         if (CausesValidationChanged != null)\r
1205                                 CausesValidationChanged (this, e);\r
1206                 }\r
1207                 \r
1208                 protected virtual void OnChangeUICues(UICuesEventArgs e) \r
1209                 {\r
1210                         if (ChangeUICues != null)\r
1211                                 ChangeUICues (this, e);\r
1212                 }\r
1213                 \r
1214                 //Compact Framework\r
1215                 protected virtual void OnClick (EventArgs e)\r
1216                 {\r
1217                         if (Click != null)\r
1218                                 Click (this, e);\r
1219                 }\r
1220                 \r
1221     \r
1222                 protected virtual void OnContextMenuChanged (EventArgs e)\r
1223                 {\r
1224                         if (ContextMenuChanged != null)\r
1225                                 ContextMenuChanged (this, e);\r
1226                 }\r
1227                 \r
1228                 protected virtual void OnControlAdded (ControlEventArgs e)\r
1229                 {\r
1230                         if (ControlAdded != null)\r
1231                                 ControlAdded (this, e);\r
1232                 }\r
1233                 \r
1234                 protected virtual void OnControlRemoved (ControlEventArgs e)\r
1235                 {\r
1236                         if (ControlRemoved != null)\r
1237                                 ControlRemoved (this, e);\r
1238                 }\r
1239                 \r
1240                 protected virtual void OnCreateControl ()\r
1241                 {\r
1242                         \r
1243                 }\r
1244                 \r
1245                 protected virtual void OnCursorChanged (EventArgs e)\r
1246                 {\r
1247                         if (CursorChanged != null)\r
1248                                 CursorChanged (this, e);\r
1249                 }\r
1250                 \r
1251                 protected virtual void OnDockChanged (EventArgs e)\r
1252                 {\r
1253                         if (DockChanged != null)\r
1254                                 DockChanged (this, e);\r
1255                 }\r
1256                 \r
1257                 protected virtual void OnDoubleClick (EventArgs e)\r
1258                 {\r
1259                         if (DoubleClick != null)\r
1260                                 DoubleClick (this, e);\r
1261                 }\r
1262                 \r
1263                 protected virtual void OnDragDrop (DragEventArgs e)\r
1264                 {\r
1265                         if (DragDrop != null)\r
1266                                 DragDrop (this, e);\r
1267                 }\r
1268                 \r
1269                 protected virtual void OnDragEnter (DragEventArgs e)\r
1270                 {\r
1271                         if (DragEnter != null)\r
1272                                 DragEnter (this, e);\r
1273                 }\r
1274                 \r
1275                 protected virtual void OnDragLeave (EventArgs e)\r
1276                 {\r
1277                         if (DragLeave != null)\r
1278                                 DragLeave (this, e);\r
1279                 }\r
1280                 \r
1281                 protected virtual void OnDragOver (DragEventArgs e)\r
1282                 {\r
1283                         if (DragOver != null)\r
1284                                 DragOver (this, e);\r
1285                 }\r
1286                 \r
1287                 //Compact Framework\r
1288                 protected virtual void OnEnabledChanged (EventArgs e)\r
1289                 {\r
1290                         if (EnabledChanged != null)\r
1291                                 EnabledChanged (this, e);\r
1292                 }\r
1293                 \r
1294                 protected virtual void OnEnter (EventArgs e)\r
1295                 {\r
1296                         if (Enter != null)\r
1297                                 Enter (this, e);\r
1298                 }\r
1299                 \r
1300                 protected virtual void OnFontChanged (EventArgs e)\r
1301                 {\r
1302                         if (FontChanged != null)\r
1303                                 FontChanged (this, e);\r
1304                 }\r
1305                 \r
1306                 protected virtual void OnForeColorChanged (EventArgs e) \r
1307                 {\r
1308                         if (ForeColorChanged != null)\r
1309                                 ForeColorChanged (this, e);\r
1310                 }\r
1311                 \r
1312                 protected virtual void OnGiveFeedback (GiveFeedbackEventArgs e)\r
1313                 {\r
1314                         if (GiveFeedback != null)\r
1315                                 GiveFeedback (this, e);\r
1316                 }\r
1317                 \r
1318                 //Compact Framework\r
1319                 protected virtual void OnGotFocus (EventArgs e) \r
1320                 {\r
1321                         if (GotFocus != null)\r
1322                                 GotFocus (this, e);\r
1323                 }\r
1324                 \r
1325                 protected virtual void OnHandleCreated (EventArgs e) \r
1326                 {\r
1327                         Console.WriteLine ("OnHandleCreated");\r
1328     \r
1329                         if (HandleCreated != null)\r
1330                                 HandleCreated (this, e);\r
1331     \r
1332                         // create all child windows\r
1333                         IEnumerator cw = childControls.GetEnumerator();\r
1334     \r
1335                         while (cw.MoveNext()) {\r
1336                                 Console.WriteLine ("Adding Control");\r
1337                                 Control control = (Control) cw.Current;\r
1338                                 control.CreateControl ();\r
1339                                 control.Show ();\r
1340                         }\r
1341                 }\r
1342                 \r
1343                 protected virtual void OnHandleDestroyed (EventArgs e) \r
1344                 {\r
1345                         if (HandleDestroyed != null)\r
1346                                 HandleDestroyed (this, e);\r
1347                 }\r
1348                 \r
1349                 protected virtual void OnHelpRequested (HelpEventArgs e) \r
1350                 {\r
1351                         if (HelpRequested != null)\r
1352                                 HelpRequested (this, e);\r
1353                 }\r
1354                 \r
1355                 protected virtual void OnImeModeChanged (EventArgs e) \r
1356                 {\r
1357                         if (ImeModeChanged != null)\r
1358                                 ImeModeChanged (this, e);\r
1359                 }\r
1360                 \r
1361                 protected virtual void OnInvalidated (InvalidateEventArgs e) \r
1362                 {\r
1363                         if (Invalidated != null)\r
1364                                 Invalidated (this, e);\r
1365                 }\r
1366                 \r
1367                 //Compact Framework\r
1368                 protected virtual void OnKeyDown (KeyEventArgs e) \r
1369                 {\r
1370                         if (KeyDown != null)\r
1371                                 KeyDown (this, e);\r
1372                 }\r
1373                 \r
1374                 //Compact Framework\r
1375                 protected virtual void OnKeyPress (KeyPressEventArgs e) \r
1376                 {\r
1377                         if (KeyPress != null)\r
1378                                 KeyPress (this, e);\r
1379                 }\r
1380                 \r
1381                 //Compact Framework\r
1382                 protected virtual void OnKeyUp (KeyEventArgs e) \r
1383                 {\r
1384                         if (KeyUp != null)\r
1385                                 KeyUp (this, e);\r
1386     \r
1387                 }\r
1388                 \r
1389                 protected virtual void OnLayout (LayoutEventArgs e) \r
1390                 {\r
1391                         if (Layout != null)\r
1392                                 Layout (this, e);\r
1393                 }\r
1394                 \r
1395                 protected virtual void OnLeave (EventArgs e) \r
1396                 {\r
1397                         if (Leave != null)\r
1398                                 Leave (this, e);\r
1399                 }\r
1400                 \r
1401                 protected virtual void OnLocationChanged (EventArgs e) \r
1402                 {\r
1403                         if (LocationChanged != null)\r
1404                                 LocationChanged (this, e);\r
1405                 }\r
1406                 \r
1407                 //Compact Framework\r
1408                 protected virtual void OnLostFocus (EventArgs e) \r
1409                 {\r
1410                         if (LostFocus != null)\r
1411                                 LostFocus (this, e);\r
1412                 }\r
1413                 \r
1414                 //Compact Framework\r
1415                 protected virtual void OnMouseDown (MouseEventArgs e) \r
1416                 {\r
1417                         if (MouseDown != null)\r
1418                                 MouseDown (this, e);\r
1419                 }\r
1420                 \r
1421                 protected virtual void OnMouseEnter (EventArgs e) \r
1422                 {\r
1423                         if (MouseEnter != null)\r
1424                                 MouseEnter (this, e);\r
1425                 }\r
1426     \r
1427                 protected virtual void OnMouseHover (EventArgs e) \r
1428                 {\r
1429                         if (MouseHover != null)\r
1430                                 MouseHover (this, e);\r
1431                 }\r
1432                 \r
1433                 protected virtual void OnMouseLeave (EventArgs e) \r
1434                 {\r
1435                         if (MouseLeave != null)\r
1436                                 MouseLeave (this, e);\r
1437                 }\r
1438                 \r
1439                 //Compact Framework\r
1440                 protected virtual void OnMouseMove (MouseEventArgs e) \r
1441                 {\r
1442                         if (MouseMove != null)\r
1443                                 MouseMove (this, e);\r
1444                 }\r
1445                 \r
1446                 //Compact Framework\r
1447                 protected virtual void OnMouseUp (MouseEventArgs e) \r
1448                 {\r
1449                         if (MouseUp != null)\r
1450                                 MouseUp (this, e);\r
1451                 }\r
1452                 \r
1453                 protected virtual void OnMouseWheel (MouseEventArgs e) \r
1454                 {\r
1455                         if (MouseWheel != null)\r
1456                                 MouseWheel (this, e);\r
1457                 }\r
1458                 \r
1459                 protected virtual void OnMove (EventArgs e) \r
1460                 {\r
1461                         if (Move != null)\r
1462                                 Move (this, e);\r
1463                 }\r
1464                 \r
1465                 protected virtual void OnNotifyMessage (Message m) \r
1466                 {\r
1467     \r
1468                 }\r
1469                 \r
1470                 //Compact Framework\r
1471                 protected virtual void OnPaint (PaintEventArgs e) \r
1472                 {\r
1473                         if (Paint != null)\r
1474                                 Paint (this, e);\r
1475                 }\r
1476                 \r
1477                 //Compact Framework\r
1478                 protected virtual void OnPaintBackground (PaintEventArgs e) \r
1479                 {\r
1480     \r
1481                 }\r
1482                 \r
1483                 protected virtual void OnParentBackColorChanged (EventArgs e) \r
1484                 {\r
1485                         if (BackColorChanged != null)\r
1486                                 BackColorChanged (this, e);\r
1487                 }\r
1488                 \r
1489                 protected virtual void OnParentBackgroundImageChanged (\r
1490                         EventArgs e) \r
1491                 {\r
1492                         if (BackgroundImageChanged != null)\r
1493                                 BackgroundImageChanged (this, e);\r
1494                 }\r
1495                 \r
1496                 protected virtual void OnParentBindingContextChanged (\r
1497                         EventArgs e) \r
1498                 {\r
1499                         if (BindingContextChanged != null)\r
1500                                 BindingContextChanged (this, e);\r
1501                 }\r
1502                 \r
1503                 //Compact Framework\r
1504                 protected virtual void OnParentChanged (EventArgs e) \r
1505                 {\r
1506                         if (ParentChanged != null)\r
1507                                 ParentChanged (this, e);\r
1508                 }\r
1509                 \r
1510                 protected virtual void OnParentEnabledChanged (EventArgs e) \r
1511                 {\r
1512                         if (EnabledChanged != null)\r
1513                                 EnabledChanged (this, e);\r
1514                 }\r
1515                 \r
1516                 protected virtual void OnParentFontChanged (EventArgs e) \r
1517                 {\r
1518                         if (FontChanged != null)\r
1519                                 FontChanged (this, e);\r
1520                 }\r
1521                 \r
1522                 protected virtual void OnParentForeColorChanged (EventArgs e) \r
1523                 {\r
1524                         if (ForeColorChanged != null)\r
1525                                 ForeColorChanged (this, e);\r
1526                 }\r
1527                 \r
1528                 protected virtual void OnParentRightToLeftChanged (\r
1529                         EventArgs e) \r
1530                 {\r
1531                         if (RightToLeftChanged != null)\r
1532                                 RightToLeftChanged (this, e);\r
1533                 }\r
1534                 \r
1535                 protected virtual void OnParentVisibleChanged (EventArgs e) \r
1536                 {\r
1537                         if (VisibleChanged != null)\r
1538                                 VisibleChanged (this, e);\r
1539                 }\r
1540                 \r
1541                 protected virtual void OnQueryContinueDrag (\r
1542                         QueryContinueDragEventArgs e) \r
1543                 {\r
1544                         if (QueryContinueDrag != null)\r
1545                                 QueryContinueDrag (this, e);\r
1546                 }\r
1547                 \r
1548                 //Compact Framework\r
1549                 protected virtual void OnResize (EventArgs e) \r
1550                 {\r
1551                         if (Resize != null)\r
1552                                 Resize (this, e);\r
1553                 }\r
1554                 \r
1555                 protected virtual void OnRightToLeftChanged (EventArgs e) \r
1556                 {\r
1557                         if (RightToLeftChanged != null)\r
1558                                 RightToLeftChanged (this, e);\r
1559                 }\r
1560                 \r
1561                 protected virtual void OnSizeChanged (EventArgs e) \r
1562                 {\r
1563                         if (SizeChanged != null)\r
1564                                 SizeChanged (this, e);\r
1565                 }\r
1566                 \r
1567                 protected virtual void OnStyleChanged (EventArgs e) \r
1568                 {\r
1569                         if (StyleChanged != null)\r
1570                                 StyleChanged (this, e);\r
1571                 }\r
1572                 \r
1573                 protected virtual void OnSystemColorsChanged (EventArgs e) \r
1574                 {\r
1575                         if (SystemColorsChanged != null)\r
1576                                 SystemColorsChanged (this, e);\r
1577                 }\r
1578                 \r
1579                 protected virtual void OnTabIndexChanged (EventArgs e) \r
1580                 {\r
1581                         if (TabIndexChanged != null)\r
1582                                 TabIndexChanged (this, e);\r
1583                 }\r
1584                 \r
1585                 protected virtual void OnTabStopChanged (EventArgs e) \r
1586                 {\r
1587                         if (TabStopChanged != null)\r
1588                                 TabStopChanged (this, e);\r
1589                 }\r
1590                 \r
1591                 //Compact Framework\r
1592                 protected virtual void OnTextChanged (EventArgs e) \r
1593                 {\r
1594                         if (TextChanged != null)\r
1595                                 TextChanged (this, e);\r
1596                 }\r
1597     \r
1598                 [MonoTODO] // this doesn't seem to be documented\r
1599     //          protected virtual void OnTextAlignChanged (EventArgs e) {\r
1600     //                  TextAlignChanged (this, e);\r
1601     //          }\r
1602                 \r
1603                 protected virtual void OnValidated (EventArgs e) \r
1604                 {\r
1605                         if (Validated != null)\r
1606                                 Validated (this, e);\r
1607                 }\r
1608                 \r
1609                 [MonoTODO]\r
1610                 // CancelEventArgs not ready\r
1611                 //protected virtual void OnValidating(CancelEventArgs e) \r
1612                 //{\r
1613                 //      throw new NotImplementedException ();\r
1614                 //}\r
1615                 \r
1616                 [MonoTODO]\r
1617                 protected virtual void OnVisibleChanged (EventArgs e) \r
1618                 {\r
1619                         if (VisibleChanged != null)\r
1620                                 VisibleChanged (this, e);\r
1621                 }\r
1622                 // --- end of methods for events ---\r
1623                 \r
1624                 \r
1625                 [MonoTODO]\r
1626                 public void PerformLayout () \r
1627                 {\r
1628                         throw new NotImplementedException ();\r
1629                 }\r
1630                 \r
1631                 [MonoTODO]\r
1632                 public void PerformLayout (Control affectedControl,\r
1633                                            string affectedProperty) \r
1634                 {\r
1635                         throw new NotImplementedException ();\r
1636                 }\r
1637                 \r
1638                 //Compact Framework\r
1639                 [MonoTODO]\r
1640                 public Point PointToClient (Point p) \r
1641                 {\r
1642                         throw new NotImplementedException ();\r
1643                 }\r
1644                 \r
1645                 //Compact Framework\r
1646                 [MonoTODO]\r
1647                 public Point PointToScreen (Point p) \r
1648                 {\r
1649                         throw new NotImplementedException ();\r
1650                 }\r
1651                 \r
1652                 [MonoTODO]\r
1653                 public virtual bool PreProcessMessage (ref Message msg) \r
1654                 {\r
1655                         throw new NotImplementedException ();\r
1656                 }\r
1657                 \r
1658                 [MonoTODO]\r
1659                 protected virtual bool ProcessCmdKey (ref Message msg,\r
1660                                                       Keys keyData) \r
1661                 {\r
1662                         throw new NotImplementedException ();\r
1663                 }\r
1664                 \r
1665                 [MonoTODO]\r
1666                 protected virtual bool ProcessDialogChar (char charCode) \r
1667                 {\r
1668                         throw new NotImplementedException ();\r
1669                 }\r
1670                 \r
1671                 [MonoTODO]\r
1672                 protected virtual bool ProcessDialogKey (Keys keyData) \r
1673                 {\r
1674                         throw new NotImplementedException ();\r
1675                 }\r
1676                 \r
1677                 [MonoTODO]\r
1678                 protected virtual bool ProcessKeyEventArgs (ref Message m) \r
1679                 {\r
1680                         throw new NotImplementedException ();\r
1681                 }\r
1682                 \r
1683                 [MonoTODO]\r
1684                 protected internal virtual bool ProcessKeyMessage (\r
1685                         ref Message m) \r
1686                 {\r
1687                         throw new NotImplementedException ();\r
1688                 }\r
1689                 \r
1690                 [MonoTODO]\r
1691                 protected virtual bool ProcessKeyPreview (ref Message m) \r
1692                 {\r
1693                         throw new NotImplementedException ();\r
1694                 }\r
1695                 \r
1696                 [MonoTODO]\r
1697                 protected virtual bool ProcessMnemonic (char charCode) \r
1698                 {\r
1699                         throw new NotImplementedException ();\r
1700                 }\r
1701                 \r
1702                 // used when properties/values of Control \r
1703                 // are big enough to warrant recreating the HWND\r
1704                 protected void RecreateHandle() \r
1705                 {\r
1706                         CreateHandle ();\r
1707     \r
1708                 }\r
1709                 \r
1710                 //Compact Framework\r
1711                 [MonoTODO]\r
1712                 public Rectangle RectangleToClient (Rectangle r) \r
1713                 {\r
1714                         throw new NotImplementedException ();\r
1715                 }\r
1716                 \r
1717                 //Compact Framework\r
1718                 [MonoTODO]\r
1719                 public Rectangle RectangleToScreen (Rectangle r) \r
1720                 {\r
1721                         throw new NotImplementedException ();\r
1722                 }\r
1723                 \r
1724                 [MonoTODO]\r
1725                 protected static bool ReflectMessage (IntPtr hWnd,\r
1726                                                       ref Message m) \r
1727                 {\r
1728                         throw new NotImplementedException ();\r
1729                 }\r
1730                 \r
1731                 //Compact Framework\r
1732                 public virtual void Refresh () \r
1733                 {\r
1734                         Win32.RECT rect = (Win32.RECT) null;\r
1735                         Win32.InvalidateRect (Handle, ref rect, true);\r
1736                         Win32.UpdateWindow (Handle);\r
1737                 }\r
1738                 \r
1739                 [MonoTODO]\r
1740                 public virtual void ResetBackColor () \r
1741                 {\r
1742                         throw new NotImplementedException ();\r
1743                 }\r
1744                 \r
1745                 [MonoTODO]\r
1746                 public void ResetBindings () \r
1747                 {\r
1748                         throw new NotImplementedException ();\r
1749                 }\r
1750                 \r
1751                 [MonoTODO]\r
1752                 public virtual void ResetFont () \r
1753                 {\r
1754                         throw new NotImplementedException ();\r
1755                 }\r
1756                 \r
1757                 [MonoTODO]\r
1758                 public virtual void ResetForeColor () \r
1759                 {\r
1760                         throw new NotImplementedException ();\r
1761                 }\r
1762                 \r
1763                 [MonoTODO]\r
1764                 public void ResetImeMode () \r
1765                 {\r
1766                         throw new NotImplementedException ();\r
1767                 }\r
1768                 \r
1769                 [MonoTODO]\r
1770                 public virtual void ResetRightToLeft () \r
1771                 {\r
1772                         throw new NotImplementedException ();\r
1773                 }\r
1774                 \r
1775                 [MonoTODO]\r
1776                 public virtual void ResetText () \r
1777                 {\r
1778                         throw new NotImplementedException ();\r
1779                 }\r
1780                 \r
1781                 [MonoTODO]\r
1782                 public void ResumeLayout () \r
1783                 {\r
1784                         throw new NotImplementedException ();\r
1785                 }\r
1786                 \r
1787                 [MonoTODO]\r
1788                 public void ResumeLayout (bool performLayout) \r
1789                 {\r
1790                         throw new NotImplementedException ();\r
1791                 }\r
1792                 \r
1793                 [MonoTODO]\r
1794                 protected ContentAlignment RtlTranslateAlignment (\r
1795                         ContentAlignment align) \r
1796                 {\r
1797                         throw new NotImplementedException ();\r
1798                 }\r
1799                 \r
1800                 [MonoTODO]\r
1801                 protected HorizontalAlignment RtlTranslateAlignment (\r
1802                         HorizontalAlignment align) \r
1803                 {\r
1804                         throw new NotImplementedException ();\r
1805                 }\r
1806                 \r
1807                 [MonoTODO]\r
1808                 protected LeftRightAlignment RtlTranslateAlignment (\r
1809                         LeftRightAlignment align) \r
1810                 {\r
1811                         throw new NotImplementedException ();\r
1812                 }\r
1813                 \r
1814                 [MonoTODO]\r
1815                 protected ContentAlignment RtlTranslateContent (\r
1816                         ContentAlignment align) \r
1817                 {\r
1818                         throw new NotImplementedException ();\r
1819                 }\r
1820                 \r
1821                 [MonoTODO]\r
1822                 protected HorizontalAlignment RtlTranslateHorizontal (\r
1823                         HorizontalAlignment align) \r
1824                 {\r
1825                         throw new NotImplementedException ();\r
1826                 }\r
1827                 \r
1828                 [MonoTODO]\r
1829                 protected LeftRightAlignment RtlTranslateLeftRight (\r
1830                         LeftRightAlignment align) \r
1831                 {\r
1832                         throw new NotImplementedException ();\r
1833                 }\r
1834                 \r
1835                 [MonoTODO]\r
1836                 public void Scale (float ratio) \r
1837                 {\r
1838                         throw new NotImplementedException ();\r
1839                 }\r
1840                 \r
1841                 [MonoTODO]\r
1842                 public void Scale (float dx,float dy) \r
1843                 {\r
1844                         throw new NotImplementedException ();\r
1845                 }\r
1846                 \r
1847                 [MonoTODO]\r
1848                 protected virtual void ScaleCore (float dx, float dy) \r
1849                 {\r
1850                         throw new NotImplementedException ();\r
1851                 }\r
1852                 \r
1853                 [MonoTODO]\r
1854                 public void Select () \r
1855                 {\r
1856                         throw new NotImplementedException ();\r
1857                 }\r
1858                 \r
1859                 [MonoTODO]\r
1860                 protected virtual void Select (bool directed,bool forward) \r
1861                 {\r
1862                         throw new NotImplementedException ();\r
1863                 }\r
1864                 \r
1865                 [MonoTODO]\r
1866                 public bool SelectNextControl (Control ctl, bool forward, \r
1867                                                bool tabStopOnly, \r
1868                                                bool nested, bool wrap)\r
1869                 {\r
1870                         throw new NotImplementedException ();\r
1871                 }\r
1872                 \r
1873                 //Compact Framework\r
1874                 [MonoTODO]\r
1875                 public void SendToBack () \r
1876                 {\r
1877                         throw new NotImplementedException ();\r
1878                 }\r
1879                 \r
1880                 [MonoTODO]\r
1881                 public void SetBounds (int x, int y, int width, int height) \r
1882                 {\r
1883                         throw new NotImplementedException ();\r
1884                 }\r
1885                 \r
1886                 [MonoTODO]\r
1887                 public void SetBounds (int x, int y, int width, int height,\r
1888                                        BoundsSpecified specified) \r
1889                 {\r
1890                         throw new NotImplementedException ();\r
1891                 }\r
1892                 \r
1893                 [MonoTODO]\r
1894                 protected virtual void SetBoundsCore (\r
1895                         int x, int y, int width, int height,\r
1896                         BoundsSpecified specified) \r
1897                 {\r
1898                         throw new NotImplementedException ();\r
1899                 }\r
1900                 \r
1901                 [MonoTODO]\r
1902                 protected virtual void SetClientSizeCore (int x, int y)\r
1903                 {\r
1904                         throw new NotImplementedException ();\r
1905                 }\r
1906                 \r
1907                 [MonoTODO]\r
1908                 protected void SetStyle (ControlStyles flag, bool value) \r
1909                 {\r
1910                         throw new NotImplementedException ();\r
1911                 }\r
1912                 \r
1913                 protected void SetTopLevel (bool value)\r
1914                 {\r
1915                         if (value)\r
1916                                 // FIXME: verify on whether this is supposed\r
1917                                 // to activate/deactive the window\r
1918                                 Win32.SetWindowPos (Handle, \r
1919                                                     (IntPtr) Win32.HWND_NOTOPMOST,\r
1920                                                     0, 0, 0, 0, 0);\r
1921                         else\r
1922                                 // FIXME: this does not make sense but\r
1923                                 // the docs say the window is hidden\r
1924                                 Win32.ShowWindow (Handle, Win32.SW_HIDE);\r
1925                 }\r
1926                 \r
1927                 [MonoTODO]\r
1928                 protected virtual void SetVisibleCore (bool value)\r
1929                 {\r
1930                         throw new NotImplementedException ();\r
1931                 }\r
1932                 \r
1933                 //Compact Framework\r
1934                 public void Show () \r
1935                 {\r
1936                         Win32.ShowWindow (Handle, Win32.SW_SHOW);\r
1937                 }\r
1938                 \r
1939                 [MonoTODO]\r
1940                 public void SuspendLayout () \r
1941                 {\r
1942                         throw new NotImplementedException ();\r
1943                 }\r
1944                 \r
1945                 //Compact Framework\r
1946                 public void Update () \r
1947                 {\r
1948                         Win32.UpdateWindow (Handle);\r
1949                 }\r
1950                 \r
1951                 [MonoTODO]\r
1952                 protected void UpdateBounds () \r
1953                 {\r
1954                         throw new NotImplementedException ();\r
1955                 }\r
1956                 \r
1957                 [MonoTODO]\r
1958                 protected void UpdateBounds (int x, int y, int width, int height) \r
1959                 {\r
1960                         throw new NotImplementedException ();\r
1961                 }\r
1962                 \r
1963                 [MonoTODO]\r
1964                 protected void UpdateBounds (\r
1965                         int x, int y, int width, int height, int clientWidth,\r
1966                         int clientHeight)\r
1967                 {\r
1968                         throw new NotImplementedException ();\r
1969                 }\r
1970                 \r
1971                 [MonoTODO]\r
1972                 protected void UpdateStyles () \r
1973                 {\r
1974                         throw new NotImplementedException ();\r
1975                 }\r
1976                 \r
1977                 [MonoTODO]\r
1978                 protected void UpdateZOrder () \r
1979                 {\r
1980                         throw new NotImplementedException ();\r
1981                 }\r
1982                 \r
1983                 // WndProc - calls appriate On... function for the give\r
1984                 // message\r
1985                 //\r
1986                 // These On... functions do not appear to be called by\r
1987                 // WndProc:\r
1988                 //\r
1989                 // background color/image handled by WinForms\r
1990                 // OnBackColorChanged\r
1991                 // OnBackgroundImageChanged\r
1992                 // OnForeColorChanged\r
1993                 // OnPaintBackground\r
1994                 //\r
1995                 // controls are added/removed by WinForms\r
1996                 // OnControlAdded\r
1997                 // OnControlRemoved\r
1998                 // OnCreateControl\r
1999                 //\r
2000                 // OnBindingContextChanged\r
2001                 // OnCausesValidationChanged\r
2002                 // OnChangeUICues\r
2003                 // OnContextMenuChanged\r
2004                 // OnRightToLeftChanged\r
2005                 // OnGiveFeedback\r
2006                 // OnLayout\r
2007                 // OnDockChanged\r
2008                 // OnCursorChanged\r
2009                 // OnTextAlignChanged\r
2010                 // OnValidated\r
2011                 // OnValidating\r
2012                 // OnTabIndexChanged\r
2013                 // OnTabStopChanged\r
2014                 // OnLocationChanged\r
2015                 //\r
2016                 // FIXME: may be one of the WM_IME_ messages\r
2017                 // OnImeModeChanged \r
2018                 //\r
2019                 // InvalidateRect is called by no Invalidate message exists\r
2020                 // OnInvalidated\r
2021                 //\r
2022                 // these messages ARE not called by WNDPROC according to docs\r
2023                 // OnParentBackColorChanged \r
2024                 // OnParentBackgroundImageChanged\r
2025                 // OnParentBindingContextChanged\r
2026                 // OnParentChanged\r
2027                 // OnParentEnabledChanged\r
2028                 // OnParentFontChanged\r
2029                 // OnParentForeColorChanged\r
2030                 // OnParentRightToLeftChanged\r
2031                 // OnParentVisibleChanged\r
2032                 //\r
2033                 protected virtual void WndProc(ref Message m) \r
2034                 {\r
2035                         EventArgs eventArgs = new EventArgs ();\r
2036                         // FIXME: paintEventArgs is not being created properly\r
2037                         PaintEventArgs paintEventArgs = new PaintEventArgs (\r
2038                                 new Graphics(), new Rectangle());\r
2039     \r
2040                         switch (m.Msg) {\r
2041     \r
2042                         case Win32.WM_CREATE:\r
2043                                 Console.WriteLine ("WM_CREATE");\r
2044                                 OnHandleCreated (eventArgs);\r
2045                                 break;\r
2046                         case Win32.WM_LBUTTONDBLCLK:\r
2047                                 OnDoubleClick (eventArgs);\r
2048                                 break;\r
2049                                 // OnDragDrop\r
2050                                 // OnDragEnter\r
2051                                 // OnDragLeave\r
2052                                 // OnDragOver\r
2053                                 // OnQueryContinueDrag\r
2054                         case Win32.WM_ENABLE:\r
2055                                 OnEnabledChanged (eventArgs);\r
2056                                 break;\r
2057                         case Win32.WM_SETFOCUS:\r
2058                                 OnEnter (eventArgs);\r
2059                                 OnGotFocus (eventArgs);\r
2060                                 break;\r
2061                         case Win32.WM_FONTCHANGE:\r
2062                                 OnFontChanged (eventArgs);\r
2063                                 break;\r
2064                         case Win32.WM_DESTROY:\r
2065                                 OnHandleDestroyed (eventArgs);\r
2066                                 break;\r
2067                         case Win32.WM_HELP:\r
2068                                 // FIXME:\r
2069                                 //OnHelpRequested (eventArgs);\r
2070                                 break;\r
2071                         case Win32.WM_KEYDOWN:\r
2072                                 // FIXME:\r
2073                                 // OnKeyDown (eventArgs);\r
2074                                 break;\r
2075                         case Win32.WM_CHAR:\r
2076                                 // FIXME:\r
2077                                 // OnKeyPress (eventArgs);\r
2078                                 break;\r
2079                         case Win32.WM_KEYUP:\r
2080                                 // FIXME:\r
2081                                 // OnKeyUp (eventArgs);\r
2082                                 break;\r
2083                         case Win32.WM_KILLFOCUS:\r
2084                                 OnLeave (eventArgs);\r
2085                                 OnLostFocus (eventArgs);\r
2086                                 break;\r
2087                         case Win32.WM_LBUTTONDOWN:\r
2088                                 // FIXME:\r
2089                                 // OnMouseDown (eventArgs);\r
2090                                 break;\r
2091                         case Win32.WM_MOUSEACTIVATE:\r
2092                                 OnMouseEnter (eventArgs);\r
2093                                 break;\r
2094                         case Win32.WM_MOUSEHOVER: // called by TrackMouseEvent\r
2095                                 OnMouseHover (eventArgs);\r
2096                                 break;\r
2097                         case Win32.WM_MOUSELEAVE: // called by TrackMouseEvent\r
2098                                 OnMouseLeave (eventArgs);\r
2099                                 break;\r
2100                         case Win32.WM_MOUSEMOVE:\r
2101                                 // FIXME:\r
2102                                 // OnMouseMove (eventArgs);\r
2103                                 break;\r
2104                         case Win32.WM_LBUTTONUP:\r
2105                                 // FIXME:\r
2106                                 // OnMouseUp (eventArgs);\r
2107                                 break;\r
2108                         case Win32.WM_MOUSEWHEEL:\r
2109                                 // FIXME:\r
2110                                 // OnMouseWheel (eventArgs);\r
2111                                 break;\r
2112                         case Win32.WM_MOVE:\r
2113                                 OnMove (eventArgs);\r
2114                                 break;\r
2115                         case Win32.WM_NOTIFY:\r
2116                                 // FIXME: get NM_CLICKED msg from pnmh\r
2117                                 // OnClick (eventArgs);\r
2118                                 // OnNotifyMessage (eventArgs);\r
2119                         case Win32.WM_PAINT:\r
2120                                 OnPaint (paintEventArgs);\r
2121                                 break;\r
2122                         case Win32.WM_SIZE:\r
2123                                 OnResize (eventArgs);\r
2124                                 OnSizeChanged (eventArgs);\r
2125                                 break;\r
2126                         case Win32.WM_STYLECHANGED:\r
2127                                 OnStyleChanged (eventArgs);\r
2128                                 break;\r
2129                         case Win32.WM_SYSCOLORCHANGE:\r
2130                                 OnSystemColorsChanged (eventArgs);\r
2131                                 break;\r
2132                         case Win32.WM_SETTEXT:\r
2133                                 OnTextChanged (eventArgs);\r
2134                                 break;\r
2135                         case Win32.WM_SHOWWINDOW:\r
2136                                 OnVisibleChanged (eventArgs);\r
2137                                 break;\r
2138     //                  default:\r
2139     //                          DefWndProc (ref m);\r
2140     //                          break;\r
2141                         }\r
2142                 }\r
2143     \r
2144                 /// --- Control: events ---\r
2145                 public event EventHandler BackColorChanged;// {\r
2146     //                  add {\r
2147     //                          throw new NotImplementedException ();\r
2148     //                  }\r
2149     //                  remove {\r
2150     //                          throw new NotImplementedException ();\r
2151     //                  }\r
2152     //          }\r
2153                 \r
2154                 public event EventHandler BackgroundImageChanged; //{\r
2155     //                  add {\r
2156     //                          throw new NotImplementedException ();\r
2157     //                  }\r
2158     //                  remove {\r
2159     //                          throw new NotImplementedException ();\r
2160     //                  }\r
2161     //          }\r
2162                 \r
2163                 public event EventHandler BindingContextChanged; // {\r
2164     //                  add {\r
2165     //                          throw new NotImplementedException ();\r
2166     //                  }\r
2167     //                  remove {\r
2168     //                          throw new NotImplementedException ();\r
2169     //                  }\r
2170     //          }\r
2171                 \r
2172                 public event EventHandler CausesValidationChanged; // {\r
2173     //                  add {\r
2174     //                          throw new NotImplementedException ();\r
2175     //                  }\r
2176     //                  remove {\r
2177     //                          throw new NotImplementedException ();\r
2178     //                  }\r
2179     //          }\r
2180                 \r
2181                 public event UICuesEventHandler ChangeUICues; // {\r
2182     //                  add {\r
2183     //                          throw new NotImplementedException ();\r
2184     //                  }\r
2185     //                  remove {\r
2186     //                          throw new NotImplementedException ();\r
2187     //                  }\r
2188     //          }\r
2189                 \r
2190                 //Compact Framework\r
2191                 public event EventHandler Click; // {\r
2192     //                  add {\r
2193     //                          throw new NotImplementedException ();\r
2194     //                  }\r
2195     //                  remove {\r
2196     //                          throw new NotImplementedException ();\r
2197     //                  }\r
2198     //          }\r
2199                 \r
2200                 public event EventHandler ContextMenuChanged;\r
2201                 \r
2202                 public event ControlEventHandler ControlAdded;  // {\r
2203     //                  add {\r
2204     //                          throw new NotImplementedException ();\r
2205     //                  }\r
2206     //                  remove {\r
2207     //                          throw new NotImplementedException ();\r
2208     //                  }\r
2209     //          }\r
2210                 \r
2211                 public event ControlEventHandler ControlRemoved; // {\r
2212     //                  add {\r
2213     //                          throw new NotImplementedException ();\r
2214     //                  }\r
2215     //                  remove {\r
2216     //                          throw new NotImplementedException ();\r
2217     //                  }\r
2218     //          }\r
2219                 \r
2220                 public event EventHandler CursorChanged;        // {\r
2221     //                  add {\r
2222     //                          throw new NotImplementedException ();\r
2223     //                  }\r
2224     //                  remove {\r
2225     //                          throw new NotImplementedException ();\r
2226     //                  }\r
2227     //          }\r
2228                 \r
2229                 public event EventHandler DockChanged;  // {\r
2230     //                  add {\r
2231     //                          throw new NotImplementedException ();\r
2232     //                  }\r
2233     //                  remove {\r
2234     //                          throw new NotImplementedException ();\r
2235     //                  }\r
2236     //          }\r
2237                 \r
2238                 public event EventHandler DoubleClick; // {\r
2239     //                  add {\r
2240     //                          throw new NotImplementedException ();\r
2241     //                  }\r
2242     //                  remove {\r
2243     //                          throw new NotImplementedException ();\r
2244     //                  }\r
2245     //          }\r
2246                 \r
2247                 public event DragEventHandler DragDrop; // {\r
2248     //                  add {\r
2249     //                          throw new NotImplementedException ();\r
2250     //                  }\r
2251     //                  remove {\r
2252     //                          throw new NotImplementedException ();\r
2253     //                  }\r
2254     //          }\r
2255                 \r
2256                 public event DragEventHandler DragEnter; // {\r
2257     //                  add {\r
2258     //                          throw new NotImplementedException ();\r
2259     //                  }\r
2260     //                  remove {\r
2261     //                          throw new NotImplementedException ();\r
2262     //                  }\r
2263     //          }\r
2264                 \r
2265                 public event EventHandler DragLeave; // {\r
2266     //                  add {\r
2267     //                          throw new NotImplementedException ();\r
2268     //                  }\r
2269     //                  remove {\r
2270     //                          throw new NotImplementedException ();\r
2271     //                  }\r
2272     //          }\r
2273                 \r
2274                 public event DragEventHandler DragOver; // {\r
2275     //                  add {\r
2276     //                          throw new NotImplementedException ();\r
2277     //                  }\r
2278     //                  remove {\r
2279     //                          throw new NotImplementedException ();\r
2280     //                  }\r
2281     //          }\r
2282                 \r
2283                 //Compact Framework\r
2284                 public event EventHandler EnabledChanged; // {\r
2285     //                  add {\r
2286     //                          throw new NotImplementedException ();\r
2287     //                  }\r
2288     //                  remove {\r
2289     //                          throw new NotImplementedException ();\r
2290     //                  }\r
2291     //          }\r
2292                 \r
2293                 public event EventHandler Enter; // {\r
2294     //                  add {\r
2295     //                          throw new NotImplementedException ();\r
2296     //                  }\r
2297     //                  remove {\r
2298     //                          throw new NotImplementedException ();\r
2299     //                  }\r
2300     //          }\r
2301                 \r
2302                 public event EventHandler FontChanged; // {\r
2303     //                  add {\r
2304     //                          throw new NotImplementedException ();\r
2305     //                  }\r
2306     //                  remove {\r
2307     //                          throw new NotImplementedException ();\r
2308     //                  }\r
2309     //          }\r
2310                 \r
2311                 public event EventHandler ForeColorChanged; // {\r
2312     //                  add {\r
2313     //                          throw new NotImplementedException ();\r
2314     //                  }\r
2315     //                  remove {\r
2316     //                          throw new NotImplementedException ();\r
2317     //                  }\r
2318     //          }\r
2319                 \r
2320                 public event GiveFeedbackEventHandler GiveFeedback; // {\r
2321     //                  add {\r
2322     //                          throw new NotImplementedException ();\r
2323     //                  }\r
2324     //                  remove {\r
2325     //                          throw new NotImplementedException ();\r
2326     //                  }\r
2327     //          }\r
2328                 \r
2329                 //Compact Framework\r
2330                 public event EventHandler GotFocus; // {\r
2331     //                  add {\r
2332     //                          throw new NotImplementedException ();\r
2333     //                  }\r
2334     //                  remove {\r
2335     //                          throw new NotImplementedException ();\r
2336     //                  }\r
2337     //          }\r
2338                 \r
2339                 public event EventHandler HandleCreated; // {\r
2340     //                  add {\r
2341     //                          throw new NotImplementedException ();\r
2342     //                  }\r
2343     //                  remove {\r
2344     //                          throw new NotImplementedException ();\r
2345     //                  }\r
2346     //          }\r
2347                 \r
2348                 public event EventHandler HandleDestroyed; // {\r
2349     //                  add {\r
2350     //                          throw new NotImplementedException ();\r
2351     //                  }\r
2352     //                  remove {\r
2353     //                          throw new NotImplementedException ();\r
2354     //                  }\r
2355     //          }\r
2356                 \r
2357                 public event HelpEventHandler HelpRequested; // {\r
2358     //                  add {\r
2359     //                          throw new NotImplementedException ();\r
2360     //                  }\r
2361     //                  remove {\r
2362     //                          throw new NotImplementedException ();\r
2363     //                  }\r
2364     //          }\r
2365                 \r
2366                 public event EventHandler ImeModeChanged; // {\r
2367     //                  add {\r
2368     //                          throw new NotImplementedException ();\r
2369     //                  }\r
2370     //                  remove {\r
2371     //                          throw new NotImplementedException ();\r
2372     //                  }\r
2373     //          }\r
2374                 \r
2375                 public event InvalidateEventHandler Invalidated; // {\r
2376     //                  add {\r
2377     //                          throw new NotImplementedException ();\r
2378     //                  }\r
2379     //                  remove {\r
2380     //                          throw new NotImplementedException ();\r
2381     //                  }\r
2382     //          }\r
2383                 \r
2384                 //Compact Framework\r
2385                 public event KeyEventHandler KeyDown; // {\r
2386     //                  add {\r
2387     //                          throw new NotImplementedException ();\r
2388     //                  }\r
2389     //                  remove {\r
2390     //                          throw new NotImplementedException ();\r
2391     //                  }\r
2392     //          }\r
2393                 \r
2394                 //Compact Framework\r
2395                 public event KeyPressEventHandler KeyPress; // {\r
2396     //                  add {\r
2397     //                          throw new NotImplementedException ();\r
2398     //                  }\r
2399     //                  remove {\r
2400     //                          throw new NotImplementedException ();\r
2401     //                  }\r
2402     //          }\r
2403                 \r
2404                 //Compact Framework\r
2405                 public event KeyEventHandler KeyUp; // {\r
2406     //                  add {\r
2407     //                          throw new NotImplementedException ();\r
2408     //                  }\r
2409     //                  remove {\r
2410     //                          throw new NotImplementedException ();\r
2411     //                  }\r
2412     //          }\r
2413                 \r
2414                 public event LayoutEventHandler Layout; // {\r
2415     //                  add {\r
2416     //                          throw new NotImplementedException ();\r
2417     //                  }\r
2418     //                  remove {\r
2419     //                          throw new NotImplementedException ();\r
2420     //                  }\r
2421     //          }\r
2422                 \r
2423                 public event EventHandler Leave; // {\r
2424     //                  add {\r
2425     //                          throw new NotImplementedException ();\r
2426     //                  }\r
2427     //                  remove {\r
2428     //                          throw new NotImplementedException ();\r
2429     //                  }\r
2430     //          }\r
2431                 \r
2432                 public event EventHandler LocationChanged; // {\r
2433     //                  add {\r
2434     //                          throw new NotImplementedException ();\r
2435     //                  }\r
2436     //                  remove {\r
2437     //                          throw new NotImplementedException ();\r
2438     //                  }\r
2439     //          }\r
2440                 \r
2441                 //Compact Framework\r
2442                 public event EventHandler LostFocus; // {\r
2443     //                  add {\r
2444     //                          throw new NotImplementedException ();\r
2445     //                  }\r
2446     //                  remove {\r
2447     //                          throw new NotImplementedException ();\r
2448     //                  }\r
2449     //          }\r
2450                 \r
2451                 //Compact Framework\r
2452                 public event MouseEventHandler MouseDown; // {\r
2453     //                  add {\r
2454     //                          throw new NotImplementedException ();\r
2455     //                  }\r
2456     //                  remove {\r
2457     //                          throw new NotImplementedException ();\r
2458     //                  }\r
2459     //          }\r
2460                 \r
2461                 public event EventHandler MouseEnter; // {\r
2462     //                  add {\r
2463     //                          throw new NotImplementedException ();\r
2464     //                  }\r
2465     //                  remove {\r
2466     //                          throw new NotImplementedException ();\r
2467     //                  }\r
2468     //          }\r
2469                 \r
2470                 public event EventHandler MouseHover; // {\r
2471     //                  add {\r
2472     //                          throw new NotImplementedException ();\r
2473     //                  }\r
2474     //                  remove {\r
2475     //                          throw new NotImplementedException ();\r
2476     //                  }\r
2477     //          }\r
2478                 \r
2479                 public event EventHandler MouseLeave; // {\r
2480     //                  add {\r
2481     //                          throw new NotImplementedException ();\r
2482     //                  }\r
2483     //                  remove {\r
2484     //                          throw new NotImplementedException ();\r
2485     //                  }\r
2486     //          }\r
2487                 \r
2488                 //Compact Framework\r
2489                 public event MouseEventHandler MouseMove; // {\r
2490     //                  add {\r
2491     //                          throw new NotImplementedException ();\r
2492     //                  }\r
2493     //                  remove {\r
2494     //                          throw new NotImplementedException ();\r
2495     //                  }\r
2496     //          }\r
2497                 \r
2498                 //Compact Framework\r
2499                 public event MouseEventHandler MouseUp; // {\r
2500     //                  add {\r
2501     //                          throw new NotImplementedException ();\r
2502     //                  }\r
2503     //                  remove {\r
2504     //                          throw new NotImplementedException ();\r
2505     //                  }\r
2506     //          }\r
2507                 \r
2508                 public event MouseEventHandler MouseWheel; // {\r
2509     //                  add {\r
2510     //                          throw new NotImplementedException ();\r
2511     //                  }\r
2512     //                  remove {\r
2513     //                          throw new NotImplementedException ();\r
2514     //                  }\r
2515     //          }\r
2516                 \r
2517                 public event EventHandler Move; // {\r
2518     //                  add {\r
2519     //                          throw new NotImplementedException ();\r
2520     //                  }\r
2521     //                  remove {\r
2522     //                          throw new NotImplementedException ();\r
2523     //                  }\r
2524     //          }\r
2525                 \r
2526                 //Compact Framework\r
2527                 public event PaintEventHandler Paint; // {\r
2528     //                  add {\r
2529     //                          throw new NotImplementedException ();\r
2530     //                  }\r
2531     //                  remove {\r
2532     //                          throw new NotImplementedException ();\r
2533     //                  }\r
2534     //          }\r
2535                 \r
2536                 //Compact Framework\r
2537                 public event EventHandler ParentChanged; // {\r
2538     //                  add {\r
2539     //                          throw new NotImplementedException ();\r
2540     //                  }\r
2541     //                  remove {\r
2542     //                          throw new NotImplementedException ();\r
2543     //                  }\r
2544     //          }\r
2545                 \r
2546                 public event QueryAccessibilityHelpEventHandler QueryAccessibilityHelp; // {\r
2547     //                  add {\r
2548     //                          throw new NotImplementedException ();\r
2549     //                  }\r
2550     //                  remove {\r
2551     //                          throw new NotImplementedException ();\r
2552     //                  }\r
2553     //          }\r
2554                 \r
2555                 public event QueryContinueDragEventHandler QueryContinueDrag; // {\r
2556     //                  add {\r
2557     //                          throw new NotImplementedException ();\r
2558     //                  }\r
2559     //                  remove {\r
2560     //                          throw new NotImplementedException ();\r
2561     //                  }\r
2562     //          }\r
2563                 \r
2564                 //Compact Framework\r
2565                 public event EventHandler Resize; // {\r
2566     //                  add {\r
2567     //                          throw new NotImplementedException ();\r
2568     //                  }\r
2569     //                  remove {\r
2570     //                          throw new NotImplementedException ();\r
2571     //                  }\r
2572     //          }\r
2573                 \r
2574                 public event EventHandler RightToLeftChanged; // {\r
2575     //                  add {\r
2576     //                          throw new NotImplementedException ();\r
2577     //                  }\r
2578     //                  remove {\r
2579     //                          throw new NotImplementedException ();\r
2580     //                  }\r
2581     //          }\r
2582                 \r
2583                 public event EventHandler SizeChanged; // {\r
2584     //                  add {\r
2585     //                          throw new NotImplementedException ();\r
2586     //                  }\r
2587     //                  remove {\r
2588     //                          throw new NotImplementedException ();\r
2589     //                  }\r
2590     //          }\r
2591                 \r
2592                 public event EventHandler StyleChanged; // {\r
2593     //                  add {\r
2594     //                          throw new NotImplementedException ();\r
2595     //                  }\r
2596     //                  remove {\r
2597     //                          throw new NotImplementedException ();\r
2598     //                  }\r
2599     //          }\r
2600                 \r
2601                 public event EventHandler SystemColorsChanged; // {\r
2602     //                  add {\r
2603     //                          throw new NotImplementedException ();\r
2604     //                  }\r
2605     //                  remove {\r
2606     //                          throw new NotImplementedException ();\r
2607     //                  }\r
2608     //          }\r
2609                 \r
2610                 public event EventHandler TabIndexChanged; // {\r
2611     //                  add {\r
2612     //                          throw new NotImplementedException ();\r
2613     //                  }\r
2614     //                  remove {\r
2615     //                          throw new NotImplementedException ();\r
2616     //                  }\r
2617     //          }\r
2618                 \r
2619                 public event EventHandler TabStopChanged; // {\r
2620     //                  add {\r
2621     //                          throw new NotImplementedException ();\r
2622     //                  }\r
2623     //                  remove {\r
2624     //                          throw new NotImplementedException ();\r
2625     //                  }\r
2626     //          }\r
2627                 \r
2628                 //Compact Framework\r
2629                 public event EventHandler TextChanged; // {\r
2630     //                  add {\r
2631     //                          throw new NotImplementedException ();\r
2632     //                  }\r
2633     //                  remove {\r
2634     //                          throw new NotImplementedException ();\r
2635     //                  }\r
2636     //          }\r
2637                 \r
2638                 public event EventHandler Validated; // {\r
2639     //                  add {\r
2640     //                          throw new NotImplementedException ();\r
2641     //                  }\r
2642     //                  remove {\r
2643     //                          throw new NotImplementedException ();\r
2644     //                  }\r
2645     //          }\r
2646                 \r
2647                 [MonoTODO]\r
2648                 // CancelEventHandler not yet defined\r
2649                 //public event CancelEventHandler Validating {\r
2650                 //      add {\r
2651                 //              throw new NotImplementedException ();\r
2652                 //      }\r
2653                 //      remove {\r
2654                 //              throw new NotImplementedException ();\r
2655                 //      }\r
2656                 //}\r
2657                 \r
2658                 public event EventHandler VisibleChanged; // {\r
2659     //                  add {\r
2660     //                          throw new NotImplementedException ();\r
2661     //                  }\r
2662     //                  remove {\r
2663     //                          throw new NotImplementedException ();\r
2664     //                  }\r
2665     //          }\r
2666                 \r
2667                 /// --- IWin32Window properties\r
2668                 public IntPtr Handle {\r
2669                         get { \r
2670                                 if (window != null) \r
2671                                         return window.Handle; \r
2672                                 return (IntPtr) 0;\r
2673                         }\r
2674                 }\r
2675                 \r
2676                 /// --- ISynchronizeInvoke properties ---\r
2677                 [MonoTODO]\r
2678                 public bool InvokeRequired {\r
2679                         get { throw new NotImplementedException (); }\r
2680                 }\r
2681                 \r
2682                 /// --- ISynchronizeInvoke methods ---\r
2683                 [MonoTODO]\r
2684                 public IAsyncResult BeginInvoke (Delegate method) \r
2685                 {\r
2686                         throw new NotImplementedException ();\r
2687                 }\r
2688                 \r
2689                 [MonoTODO]\r
2690                 public IAsyncResult BeginInvoke (Delegate method,\r
2691                                                  object[] args) \r
2692                 {\r
2693                         throw new NotImplementedException ();\r
2694                 }\r
2695                 \r
2696                 [MonoTODO]\r
2697                 public object EndInvoke (IAsyncResult asyncResult) \r
2698                 {\r
2699                         throw new NotImplementedException ();\r
2700                 }\r
2701                 \r
2702                 //Compact Framework\r
2703                 [MonoTODO]\r
2704                 public object Invoke (Delegate method) \r
2705                 {\r
2706                         throw new NotImplementedException ();\r
2707                 }\r
2708                 \r
2709                 [MonoTODO]\r
2710                 public object Invoke (Delegate method,object[] args) \r
2711                 {\r
2712                         throw new NotImplementedException ();\r
2713                 }\r
2714                 \r
2715                 /// sub-class: Control.ControlAccessibleObject\r
2716                 /// <summary>\r
2717                 /// Provides information about a control that can be used by an accessibility application.\r
2718                 /// </summary>\r
2719                 public class ControlAccessibleObject /*: AccessibleObject*/ {\r
2720                         // AccessibleObject not ready to be base class\r
2721                         /// --- ControlAccessibleObject.constructor ---\r
2722                         [MonoTODO]\r
2723                         public ControlAccessibleObject (Control ownerControl) \r
2724                         {\r
2725                                 throw new NotImplementedException ();\r
2726                         }\r
2727                         \r
2728                         \r
2729                         /// --- ControlAccessibleObject Properties ---\r
2730                         [MonoTODO]\r
2731     //                  public override string DefaultAction {\r
2732     //                          get { throw new NotImplementedException (); }\r
2733     //                  }\r
2734                         \r
2735                         [MonoTODO]\r
2736     //                  public override string Description {\r
2737     //                          get { throw new NotImplementedException (); }\r
2738     //                  }\r
2739                         \r
2740                         [MonoTODO]\r
2741                         public IntPtr Handle {\r
2742                                 get { throw new NotImplementedException (); }\r
2743                                 set { throw new NotImplementedException (); }\r
2744                         }\r
2745                         \r
2746                         [MonoTODO]\r
2747     //                  public override string Help {\r
2748     //                          get { throw new NotImplementedException (); }\r
2749     //                  }\r
2750                         \r
2751                         [MonoTODO]\r
2752     //                  public override string KeyboardShortcut {\r
2753     //                          get { throw new NotImplementedException (); }\r
2754     //                  }\r
2755                         \r
2756                         [MonoTODO]\r
2757     //                  public override string Name {\r
2758     //                          get { throw new NotImplementedException (); }\r
2759     //                          set { throw new NotImplementedException (); }\r
2760     //                  }\r
2761                         \r
2762                         [MonoTODO]\r
2763                         public Control Owner {\r
2764                                 get { throw new NotImplementedException (); }\r
2765                         }\r
2766                         \r
2767                         [MonoTODO]\r
2768     //                  public override AccessibleRole Role {\r
2769     //                          get { throw new NotImplementedException (); }\r
2770     //                  }\r
2771                         \r
2772                         \r
2773                         /// --- ControlAccessibleObject Methods ---\r
2774                         [MonoTODO]\r
2775     //                  public override int GetHelpTopic(out string fileName) \r
2776     //                  {\r
2777     //                          throw new NotImplementedException ();\r
2778     //                  }\r
2779                         \r
2780                         [MonoTODO]\r
2781                         public void NotifyClients (AccessibleEvents accEvent) \r
2782                         {\r
2783                                 throw new NotImplementedException ();\r
2784                         }\r
2785                         \r
2786                         [MonoTODO]\r
2787                         public void NotifyClients (AccessibleEvents accEvent,\r
2788                                                    int childID) \r
2789                         {\r
2790                                 throw new NotImplementedException ();\r
2791                         }\r
2792                         \r
2793                         [MonoTODO]\r
2794                         public override string ToString ()\r
2795                         {\r
2796                                 throw new NotImplementedException ();\r
2797                         }\r
2798                 }\r
2799                 \r
2800                 /// sub-class: Control.ControlCollection\r
2801                 /// <summary>\r
2802                 /// Represents a collection of Control objects\r
2803                 /// </summary>\r
2804                 public class ControlCollection : IList, ICollection, IEnumerable, ICloneable {\r
2805     \r
2806                         private ArrayList collection = new ArrayList ();\r
2807                         private Control owner;\r
2808     \r
2809                         /// --- ControlCollection.constructor ---\r
2810                         public ControlCollection (Control owner) \r
2811                         {\r
2812                                 this.owner = owner;\r
2813                         }\r
2814                 \r
2815                         /// --- ControlCollection Properties ---\r
2816                         public int Count {\r
2817                                 get { return collection.Count; }\r
2818                         }\r
2819                 \r
2820                         public bool IsReadOnly {\r
2821                                 get { return collection.IsReadOnly; }\r
2822                         }\r
2823                         \r
2824                         public virtual Control this [int index] {\r
2825                                 get { return (Control) collection[index]; }\r
2826                         }\r
2827                 \r
2828                         public virtual void Add (Control value) \r
2829                         {\r
2830                                 collection.Add (value);\r
2831                         }\r
2832                         \r
2833                         public virtual void AddRange (Control[] controls) \r
2834                         {\r
2835                                 collection.AddRange (controls);\r
2836                         }\r
2837                         \r
2838                         public virtual void Clear () \r
2839                         {\r
2840                                 collection.Clear ();\r
2841                         }\r
2842                 \r
2843                         public bool Contains (Control control) \r
2844                         {\r
2845                                 return collection.Contains (control);\r
2846                         }\r
2847                         \r
2848                         public void CopyTo (Array dest,int index) \r
2849                         {\r
2850                                 collection.CopyTo (dest, index);\r
2851                         }\r
2852                         \r
2853                         [MonoTODO]\r
2854                         public override bool Equals (object other) \r
2855                         {\r
2856                                 throw new NotImplementedException ();\r
2857                         }\r
2858                         \r
2859                         //inherited\r
2860                         //public static bool Equals(object o1, object o2) {\r
2861                         //      throw new NotImplementedException ();\r
2862                         //}\r
2863     \r
2864                         [MonoTODO]\r
2865                         public int GetChildIndex (Control child)\r
2866                         {\r
2867                                 throw new NotImplementedException ();\r
2868                         }\r
2869                         \r
2870                         public IEnumerator GetEnumerator () \r
2871                         {\r
2872                                 return collection.GetEnumerator ();\r
2873                         }\r
2874                         \r
2875                         [MonoTODO]\r
2876                         public override int GetHashCode () \r
2877                         {\r
2878                                 throw new NotImplementedException ();\r
2879                         }\r
2880                         \r
2881                         public int IndexOf (Control control) \r
2882                         {\r
2883                                 return collection.IndexOf (control);\r
2884                         }\r
2885                         \r
2886                         public virtual void Remove (Control value) \r
2887                         {\r
2888                                 collection.Remove (value);\r
2889                         }\r
2890                         \r
2891                         public void RemoveAt (int index) \r
2892                         {\r
2893                                 collection.RemoveAt (index);\r
2894                         }\r
2895                         \r
2896                         [MonoTODO]\r
2897                         public void SetChildIndex (Control child,int newIndex) \r
2898                         {\r
2899                                 throw new NotImplementedException ();\r
2900                         }\r
2901                         \r
2902                         /// --- ControlCollection.IClonable methods ---\r
2903                         [MonoTODO]\r
2904                         object ICloneable.Clone ()\r
2905                         {\r
2906                                 throw new NotImplementedException ();\r
2907                         }\r
2908                         \r
2909                         /// --- ControlCollection.IList properties ---\r
2910                         bool IList.IsFixedSize {\r
2911                                 get { return collection.IsFixedSize; }\r
2912                         }\r
2913     \r
2914                         object IList.this [int index] {\r
2915                                 get { return collection[index]; }\r
2916                                 set { collection[index] = value; }\r
2917                         }\r
2918     \r
2919                         object ICollection.SyncRoot {\r
2920                                 get { return collection.SyncRoot; }\r
2921                         }\r
2922         \r
2923                         bool ICollection.IsSynchronized {\r
2924                                 get { return collection.IsSynchronized; }\r
2925                         }\r
2926                         \r
2927                         /// --- ControlCollection.IList methods ---\r
2928                         int IList.Add (object control) \r
2929                         {\r
2930                                 return collection.Add (control);\r
2931                         }\r
2932                 \r
2933                         bool IList.Contains (object control) \r
2934                         {\r
2935                                 return collection.Contains (control);\r
2936                         }\r
2937                 \r
2938                         int IList.IndexOf (object control) \r
2939                         {\r
2940                                 return collection.IndexOf (control);\r
2941                         }\r
2942                 \r
2943                         void IList.Insert (int index,object value) \r
2944                         {\r
2945                                 collection.Insert (index, value);\r
2946                         }\r
2947                 \r
2948                         void IList.Remove (object control) \r
2949                         {\r
2950                                 collection.Remove (control);\r
2951                         }\r
2952                 }  // --- end of Control.ControlCollection ---\r
2953         }\r
2954     }\r