ControlHandleTest.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671
  1. // This test is designed to find exactly what conditions cause the control's
  2. // Handle to be created.
  3. using System;
  4. using NUnit.Framework;
  5. using System.Drawing;
  6. using System.Windows.Forms;
  7. using System.ComponentModel;
  8. namespace MonoTests.System.Windows.Forms
  9. {
  10. [TestFixture]
  11. public class ControlHandleTest
  12. {
  13. [Test]
  14. public void TestConstructors ()
  15. {
  16. Control c = new Control ();
  17. Assert.IsFalse (c.IsHandleCreated, "A1");
  18. c = new Control ("bob");
  19. Assert.IsFalse (c.IsHandleCreated, "A2");
  20. c = new Control (new Control (), "bob");
  21. Assert.IsFalse (c.IsHandleCreated, "A3");
  22. c = new Control ("bob", 0, 0, 100, 100);
  23. Assert.IsFalse (c.IsHandleCreated, "A4");
  24. c = new Control (new Control (), "bob", 0, 0, 100, 100);
  25. Assert.IsFalse (c.IsHandleCreated, "A5");
  26. }
  27. [Test]
  28. public void TestPublicProperties ()
  29. {
  30. // This long, carpal-tunnel syndrome inducing test shows us that
  31. // the following properties cause the Handle to be created:
  32. // - AccessibilityObject [get]
  33. // - Capture [set]
  34. // - Handle [get]
  35. Control c = new Control ();
  36. // A
  37. object o = c.AccessibilityObject;
  38. Assert.IsTrue (c.IsHandleCreated, "A0");
  39. c = new Control ();
  40. o = c.AccessibleDefaultActionDescription;
  41. c.AccessibleDefaultActionDescription = "playdoh";
  42. Assert.IsFalse (c.IsHandleCreated, "A1");
  43. o = c.AccessibleDescription;
  44. c.AccessibleDescription = "more playdoh!";
  45. Assert.IsFalse (c.IsHandleCreated, "A2");
  46. o = c.AccessibleName;
  47. c.AccessibleName = "playdoh fun factory";
  48. Assert.IsFalse (c.IsHandleCreated, "A3");
  49. o = c.AccessibleRole;
  50. c.AccessibleRole = AccessibleRole.Border;
  51. Assert.IsFalse (c.IsHandleCreated, "A4");
  52. o = c.AllowDrop;
  53. c.AllowDrop = true;
  54. Assert.IsFalse (c.IsHandleCreated, "A5");
  55. // If we don't reset the control, handle creation will fail
  56. // because AllowDrop requires STAThread, which Nunit doesn't do
  57. c = new Control();
  58. o = c.Anchor;
  59. c.Anchor = AnchorStyles.Right;
  60. Assert.IsFalse (c.IsHandleCreated, "A6");
  61. #if !__MonoCS__
  62. o = c.AutoScrollOffset;
  63. c.AutoScrollOffset = new Point (40, 40);
  64. Assert.IsFalse (c.IsHandleCreated, "A7");
  65. #endif
  66. #if NET_2_0
  67. o = c.AutoSize;
  68. c.AutoSize = true;
  69. Assert.IsFalse (c.IsHandleCreated, "A8");
  70. #endif
  71. // B
  72. o = c.BackColor;
  73. c.BackColor = Color.Green;
  74. Assert.IsFalse (c.IsHandleCreated, "A9");
  75. o = c.BackgroundImage;
  76. c.BackgroundImage = new Bitmap (1, 1);
  77. Assert.IsFalse (c.IsHandleCreated, "A10");
  78. #if NET_2_0
  79. o = c.BackgroundImageLayout;
  80. c.BackgroundImageLayout = ImageLayout.Stretch;
  81. Assert.IsFalse (c.IsHandleCreated, "A11");
  82. #endif
  83. o = c.BindingContext;
  84. c.BindingContext = new BindingContext ();
  85. Assert.IsFalse (c.IsHandleCreated, "A12");
  86. o = c.Bottom;
  87. Assert.IsFalse (c.IsHandleCreated, "A13");
  88. o = c.Bounds;
  89. c.Bounds = new Rectangle (0, 0, 12, 12);
  90. Assert.IsFalse (c.IsHandleCreated, "A14");
  91. // C
  92. o = c.CanFocus;
  93. Assert.IsFalse (c.IsHandleCreated, "A15");
  94. o = c.CanSelect;
  95. Assert.IsFalse (c.IsHandleCreated, "A16");
  96. o = c.Capture;
  97. Assert.IsFalse (c.IsHandleCreated, "A17a");
  98. c.Capture = true;
  99. Assert.IsTrue (c.IsHandleCreated, "A17b");
  100. c = new Control ();
  101. o = c.CausesValidation;
  102. c.CausesValidation = false;
  103. Assert.IsFalse (c.IsHandleCreated, "A18");
  104. o = c.ClientRectangle;
  105. Assert.IsFalse (c.IsHandleCreated, "A19");
  106. o = c.ClientSize;
  107. c.ClientSize = new Size (30, 30);
  108. Assert.IsFalse (c.IsHandleCreated, "A20");
  109. o = c.CompanyName;
  110. Assert.IsFalse (c.IsHandleCreated, "A21");
  111. o = c.Container;
  112. Assert.IsFalse (c.IsHandleCreated, "A22");
  113. o = c.ContainsFocus;
  114. Assert.IsFalse (c.IsHandleCreated, "A23");
  115. o = c.ContextMenu;
  116. c.ContextMenu = new ContextMenu ();
  117. Assert.IsFalse (c.IsHandleCreated, "A24");
  118. #if NET_2_0
  119. o = c.ContextMenuStrip;
  120. c.ContextMenuStrip = new ContextMenuStrip ();
  121. Assert.IsFalse (c.IsHandleCreated, "A25");
  122. #endif
  123. o = c.Controls;
  124. Assert.IsFalse (c.IsHandleCreated, "A26");
  125. o = c.Created;
  126. Assert.IsFalse (c.IsHandleCreated, "A27");
  127. o = c.Cursor;
  128. c.Cursor = Cursors.Arrow;
  129. Assert.IsFalse (c.IsHandleCreated, "A28");
  130. // D
  131. o = c.DataBindings;
  132. Assert.IsFalse (c.IsHandleCreated, "A29");
  133. o = c.DisplayRectangle;
  134. Assert.IsFalse (c.IsHandleCreated, "A30");
  135. o = c.Disposing;
  136. Assert.IsFalse (c.IsHandleCreated, "A31");
  137. o = c.Dock;
  138. c.Dock = DockStyle.Fill;
  139. Assert.IsFalse (c.IsHandleCreated, "A32");
  140. // E-H
  141. o = c.Enabled;
  142. c.Enabled = false;
  143. Assert.IsFalse (c.IsHandleCreated, "A33");
  144. c = new Control (); //Reset just in case enable = false affects things
  145. o = c.Focused;
  146. Assert.IsFalse (c.IsHandleCreated, "A34");
  147. o = c.Font;
  148. c.Font = new Font (c.Font, FontStyle.Bold);
  149. Assert.IsFalse (c.IsHandleCreated, "A35");
  150. o = c.ForeColor;
  151. c.ForeColor = Color.Green;
  152. Assert.IsFalse (c.IsHandleCreated, "A36");
  153. o = c.Handle;
  154. Assert.IsTrue (c.IsHandleCreated, "A37");
  155. c = new Control ();
  156. o = c.HasChildren;
  157. Assert.IsFalse (c.IsHandleCreated, "A38");
  158. o = c.Height;
  159. c.Height = 12;
  160. Assert.IsFalse (c.IsHandleCreated, "A39");
  161. // I - L
  162. o = c.ImeMode;
  163. c.ImeMode = ImeMode.On;
  164. Assert.IsFalse (c.IsHandleCreated, "A40");
  165. o = c.InvokeRequired;
  166. Assert.IsFalse (c.IsHandleCreated, "A41");
  167. o = c.IsAccessible;
  168. Assert.IsFalse (c.IsHandleCreated, "A42");
  169. o = c.IsDisposed;
  170. Assert.IsFalse (c.IsHandleCreated, "A43");
  171. #if !__MonoCS__
  172. o = c.IsMirrored;
  173. Assert.IsFalse (c.IsHandleCreated, "A44");
  174. #endif
  175. #if NET_2_0
  176. o = c.LayoutEngine;
  177. Assert.IsFalse (c.IsHandleCreated, "A45");
  178. #endif
  179. o = c.Left;
  180. c.Left = 15;
  181. Assert.IsFalse (c.IsHandleCreated, "A46");
  182. o = c.Location;
  183. c.Location = new Point (20, 20);
  184. Assert.IsFalse (c.IsHandleCreated, "A47");
  185. // M - N
  186. #if NET_2_0
  187. o = c.Margin;
  188. c.Margin = new Padding (6);
  189. Assert.IsFalse (c.IsHandleCreated, "A48");
  190. o = c.MaximumSize;
  191. c.MaximumSize = new Size (500, 500);
  192. Assert.IsFalse (c.IsHandleCreated, "A49");
  193. o = c.MinimumSize;
  194. c.MinimumSize = new Size (100, 100);
  195. Assert.IsFalse (c.IsHandleCreated, "A50");
  196. #endif
  197. o = c.Name;
  198. c.Name = "web";
  199. Assert.IsFalse (c.IsHandleCreated, "A51");
  200. // P - R
  201. #if NET_2_0
  202. o = c.Padding;
  203. c.Padding = new Padding (4);
  204. Assert.IsFalse (c.IsHandleCreated, "A52");
  205. #endif
  206. o = c.Parent;
  207. c.Parent = new Control ();
  208. Assert.IsFalse (c.IsHandleCreated, "A53");
  209. #if NET_2_0
  210. o = c.PreferredSize;
  211. Assert.IsFalse (c.IsHandleCreated, "A54");
  212. #endif
  213. o = c.ProductName;
  214. Assert.IsFalse (c.IsHandleCreated, "A55");
  215. o = c.ProductVersion;
  216. Assert.IsFalse (c.IsHandleCreated, "A56");
  217. o = c.RecreatingHandle;
  218. Assert.IsFalse (c.IsHandleCreated, "A57");
  219. o = c.Region;
  220. c.Region = new Region (new Rectangle (0, 0, 177, 177));
  221. Assert.IsFalse (c.IsHandleCreated, "A58");
  222. o = c.Right;
  223. Assert.IsFalse (c.IsHandleCreated, "A59");
  224. o = c.RightToLeft;
  225. c.RightToLeft = RightToLeft.Yes;
  226. Assert.IsFalse (c.IsHandleCreated, "A60");
  227. // S - W
  228. o = c.Site;
  229. Assert.IsFalse (c.IsHandleCreated, "A61");
  230. o = c.Size;
  231. c.Size = new Size (188, 188);
  232. Assert.IsFalse (c.IsHandleCreated, "A62");
  233. o = c.TabIndex;
  234. c.TabIndex = 5;
  235. Assert.IsFalse (c.IsHandleCreated, "A63");
  236. o = c.Tag;
  237. c.Tag = "moooooooo";
  238. Assert.IsFalse (c.IsHandleCreated, "A64");
  239. o = c.Text;
  240. c.Text = "meoooowww";
  241. Assert.IsFalse (c.IsHandleCreated, "A65");
  242. o = c.Top;
  243. c.Top = 16;
  244. Assert.IsFalse (c.IsHandleCreated, "A66");
  245. o = c.TopLevelControl;
  246. Assert.IsFalse (c.IsHandleCreated, "A67");
  247. #if !__MonoCS__
  248. o = c.UseWaitCursor;
  249. c.UseWaitCursor = true;
  250. Assert.IsFalse (c.IsHandleCreated, "A68");
  251. #endif
  252. o = c.Visible;
  253. c.Visible = true;
  254. Assert.IsFalse (c.IsHandleCreated, "A69");
  255. o = c.Width;
  256. c.Width = 190;
  257. Assert.IsFalse (c.IsHandleCreated, "A70");
  258. o = c.WindowTarget;
  259. Assert.IsFalse (c.IsHandleCreated, "A71");
  260. TestHelper.RemoveWarning (o);
  261. }
  262. [Test]
  263. public void TestProtectedProperties ()
  264. {
  265. // Not a surprise, but none of these cause handle creation.
  266. // Included just to absolutely certain.
  267. ProtectedPropertyControl c = new ProtectedPropertyControl ();
  268. object o;
  269. #if !__MonoCS__
  270. o = c.PublicCanRaiseEvents;
  271. Assert.IsFalse (c.IsHandleCreated, "A1");
  272. #endif
  273. o = c.PublicCreateParams;
  274. Assert.IsFalse (c.IsHandleCreated, "A2");
  275. #if NET_2_0
  276. o = c.PublicDefaultCursor;
  277. Assert.IsFalse (c.IsHandleCreated, "A3");
  278. #endif
  279. o = c.PublicDefaultImeMode;
  280. Assert.IsFalse (c.IsHandleCreated, "A4");
  281. #if NET_2_0
  282. o = c.PublicDefaultMargin;
  283. Assert.IsFalse (c.IsHandleCreated, "A5");
  284. o = c.PublicDefaultMaximumSize;
  285. Assert.IsFalse (c.IsHandleCreated, "A6");
  286. o = c.PublicDefaultMinimumSize;
  287. Assert.IsFalse (c.IsHandleCreated, "A7");
  288. o = c.PublicDefaultPadding;
  289. Assert.IsFalse (c.IsHandleCreated, "A8");
  290. o = c.PublicDefaultSize;
  291. Assert.IsFalse (c.IsHandleCreated, "A9");
  292. o = c.PublicDoubleBuffered;
  293. c.PublicDoubleBuffered = !c.PublicDoubleBuffered;
  294. Assert.IsFalse (c.IsHandleCreated, "A10");
  295. #endif
  296. o = c.PublicFontHeight;
  297. c.PublicFontHeight = c.PublicFontHeight + 1;
  298. Assert.IsFalse (c.IsHandleCreated, "A11");
  299. o = c.PublicRenderRightToLeft;
  300. Assert.IsFalse (c.IsHandleCreated, "A12");
  301. o = c.PublicResizeRedraw;
  302. c.PublicResizeRedraw = !c.PublicResizeRedraw;
  303. Assert.IsFalse (c.IsHandleCreated, "A13");
  304. #if !__MonoCS__
  305. o = c.PublicScaleChildren;
  306. Assert.IsFalse (c.IsHandleCreated, "A14");
  307. #endif
  308. o = c.PublicShowFocusCues;
  309. Assert.IsFalse (c.IsHandleCreated, "A15");
  310. o = c.PublicShowKeyboardCues;
  311. Assert.IsFalse (c.IsHandleCreated, "A16");
  312. TestHelper.RemoveWarning (o);
  313. }
  314. Control invokecontrol = new Control ();
  315. [Test]
  316. public void TestPublicMethods ()
  317. {
  318. // Public Methods that force Handle creation:
  319. // - CreateControl ()
  320. // - CreateGraphics ()
  321. // - GetChildAtPoint ()
  322. // - Invoke, BeginInvoke throws InvalidOperationException if Handle has not been created
  323. // - PointToClient ()
  324. // - PointToScreen ()
  325. // - RectangleToClient ()
  326. // - RectangleToScreen ()
  327. Control c = new Control ();
  328. c.BringToFront ();
  329. Assert.IsFalse (c.IsHandleCreated, "A1");
  330. c.Contains (new Control ());
  331. Assert.IsFalse (c.IsHandleCreated, "A2");
  332. c.CreateControl ();
  333. Assert.IsTrue (c.IsHandleCreated, "A3");
  334. c = new Control ();
  335. Graphics g = c.CreateGraphics ();
  336. g.Dispose ();
  337. Assert.IsTrue (c.IsHandleCreated, "A4");
  338. c = new Control ();
  339. c.Dispose ();
  340. Assert.IsFalse (c.IsHandleCreated, "A5");
  341. c = new Control ();
  342. DragDropEffects d = c.DoDragDrop ("yo", DragDropEffects.None);
  343. Assert.IsFalse (c.IsHandleCreated, "A6");
  344. Assert.AreEqual (DragDropEffects.None, d, "A6b");
  345. //Bitmap b = new Bitmap (100, 100);
  346. //c.DrawToBitmap (b, new Rectangle (0, 0, 100, 100));
  347. //Assert.IsFalse (c.IsHandleCreated, "A7");
  348. //b.Dispose ();
  349. c.FindForm ();
  350. Assert.IsFalse (c.IsHandleCreated, "A8");
  351. c.Focus ();
  352. Assert.IsFalse (c.IsHandleCreated, "A9");
  353. c.GetChildAtPoint (new Point (10, 10));
  354. Assert.IsTrue (c.IsHandleCreated, "A10");
  355. c.GetContainerControl ();
  356. c = new Control ();
  357. Assert.IsFalse (c.IsHandleCreated, "A11");
  358. c.GetNextControl (new Control (), true);
  359. Assert.IsFalse (c.IsHandleCreated, "A12");
  360. #if NET_2_0
  361. c.GetPreferredSize (Size.Empty);
  362. Assert.IsFalse (c.IsHandleCreated, "A13");
  363. #endif
  364. c.Hide ();
  365. Assert.IsFalse (c.IsHandleCreated, "A14");
  366. c.Invalidate ();
  367. Assert.IsFalse (c.IsHandleCreated, "A15");
  368. //c.Invoke (new InvokeDelegate (InvokeMethod));
  369. //Assert.IsFalse (c.IsHandleCreated, "A16");
  370. c.PerformLayout ();
  371. Assert.IsFalse (c.IsHandleCreated, "A17");
  372. c.PointToClient (new Point (100, 100));
  373. Assert.IsTrue (c.IsHandleCreated, "A18");
  374. c = new Control ();
  375. c.PointToScreen (new Point (100, 100));
  376. Assert.IsTrue (c.IsHandleCreated, "A19");
  377. c = new Control ();
  378. //c.PreProcessControlMessage ???
  379. //c.PreProcessMessage ???
  380. c.RectangleToClient (new Rectangle (0, 0, 100, 100));
  381. Assert.IsTrue (c.IsHandleCreated, "A20");
  382. c = new Control ();
  383. c.RectangleToScreen (new Rectangle (0, 0, 100, 100));
  384. Assert.IsTrue (c.IsHandleCreated, "A21");
  385. c = new Control ();
  386. c.Refresh ();
  387. Assert.IsFalse (c.IsHandleCreated, "A22");
  388. c.ResetBackColor ();
  389. Assert.IsFalse (c.IsHandleCreated, "A23");
  390. c.ResetBindings ();
  391. Assert.IsFalse (c.IsHandleCreated, "A24");
  392. c.ResetCursor ();
  393. Assert.IsFalse (c.IsHandleCreated, "A25");
  394. c.ResetFont ();
  395. Assert.IsFalse (c.IsHandleCreated, "A26");
  396. c.ResetForeColor ();
  397. Assert.IsFalse (c.IsHandleCreated, "A27");
  398. c.ResetImeMode ();
  399. Assert.IsFalse (c.IsHandleCreated, "A28");
  400. c.ResetRightToLeft ();
  401. Assert.IsFalse (c.IsHandleCreated, "A29");
  402. c.ResetText ();
  403. Assert.IsFalse (c.IsHandleCreated, "A30");
  404. c.SuspendLayout ();
  405. Assert.IsFalse (c.IsHandleCreated, "A31");
  406. c.ResumeLayout ();
  407. Assert.IsFalse (c.IsHandleCreated, "A32");
  408. #if NET_2_0
  409. c.Scale (new SizeF (1.5f, 1.5f));
  410. Assert.IsFalse (c.IsHandleCreated, "A33");
  411. #endif
  412. c.Select ();
  413. Assert.IsFalse (c.IsHandleCreated, "A34");
  414. c.SelectNextControl (new Control (), true, true, true, true);
  415. Assert.IsFalse (c.IsHandleCreated, "A35");
  416. c.SetBounds (0, 0, 100, 100);
  417. Assert.IsFalse (c.IsHandleCreated, "A36");
  418. c.Update ();
  419. Assert.IsFalse (c.IsHandleCreated, "A37");
  420. }
  421. [Test]
  422. public void Show ()
  423. {
  424. Control c = new Control ();
  425. Assert.IsFalse (c.IsHandleCreated, "A1");
  426. c.HandleCreated += delegate (object sender, EventArgs e) { Console.WriteLine (Environment.StackTrace); };
  427. c.Show ();
  428. Assert.IsFalse (c.IsHandleCreated, "A2");
  429. }
  430. public delegate void InvokeDelegate ();
  431. public void InvokeMethod () { invokecontrol.Text = "methodinvoked"; }
  432. [Test]
  433. [ExpectedException (typeof (InvalidOperationException))]
  434. public void InvokeIOE ()
  435. {
  436. Control c = new Control ();
  437. c.Invoke (new InvokeDelegate (InvokeMethod));
  438. }
  439. private class ProtectedPropertyControl : Control
  440. {
  441. #if !__MonoCS__
  442. public bool PublicCanRaiseEvents { get { return base.CanRaiseEvents; } }
  443. #endif
  444. public CreateParams PublicCreateParams { get { return base.CreateParams; } }
  445. #if NET_2_0
  446. public Cursor PublicDefaultCursor { get { return base.DefaultCursor; } }
  447. #endif
  448. public ImeMode PublicDefaultImeMode { get { return base.DefaultImeMode; } }
  449. #if NET_2_0
  450. public Padding PublicDefaultMargin { get { return base.DefaultMargin; } }
  451. public Size PublicDefaultMaximumSize { get { return base.DefaultMaximumSize; } }
  452. public Size PublicDefaultMinimumSize { get { return base.DefaultMinimumSize; } }
  453. public Padding PublicDefaultPadding { get { return base.DefaultPadding; } }
  454. public Size PublicDefaultSize { get { return base.DefaultSize; } }
  455. public bool PublicDoubleBuffered { get { return base.DoubleBuffered; } set { base.DoubleBuffered = value; } }
  456. #endif
  457. public int PublicFontHeight { get { return base.FontHeight; } set { base.FontHeight = value; } }
  458. public bool PublicRenderRightToLeft { get { return base.RenderRightToLeft; } }
  459. public bool PublicResizeRedraw { get { return base.ResizeRedraw; } set { base.ResizeRedraw = value; } }
  460. #if !__MonoCS__
  461. public bool PublicScaleChildren { get { return base.ScaleChildren; } }
  462. #endif
  463. public bool PublicShowFocusCues { get { return base.ShowFocusCues; } }
  464. public bool PublicShowKeyboardCues { get { return base.ShowKeyboardCues; } }
  465. }
  466. [Test]
  467. public void TestProtectedMethods ()
  468. {
  469. // Protected Methods that force Handle creation:
  470. // - CreateAccessibilityInstance ()
  471. // - CreateHandle ()
  472. // - IsInputChar ()
  473. // - SetTopLevel ()
  474. ProtectedMethodsControl c = new ProtectedMethodsControl ();
  475. c.PublicAccessibilityNotifyClients (AccessibleEvents.Focus, 0);
  476. #if NET_2_0
  477. Assert.IsFalse (c.IsHandleCreated, "A1");
  478. #else
  479. Assert.IsTrue (c.IsHandleCreated, "A1");
  480. #endif
  481. c.PublicCreateAccessibilityInstance ();
  482. Assert.IsTrue (c.IsHandleCreated, "A2");
  483. c = new ProtectedMethodsControl ();
  484. c.PublicCreateControlsInstance ();
  485. Assert.IsFalse (c.IsHandleCreated, "A3");
  486. c.PublicCreateHandle ();
  487. Assert.IsTrue (c.IsHandleCreated, "A4");
  488. c = new ProtectedMethodsControl ();
  489. c.PublicDestroyHandle ();
  490. Assert.IsFalse (c.IsHandleCreated, "A5");
  491. c = new ProtectedMethodsControl ();
  492. #if NET_2_0
  493. c.PublicGetAccessibilityObjectById (0);
  494. Assert.IsFalse (c.IsHandleCreated, "A6");
  495. #endif
  496. #if !__MonoCS__
  497. c.PublicGetAutoSizeMode ();
  498. Assert.IsFalse (c.IsHandleCreated, "A7");
  499. c.PublicGetScaledBounds (new Rectangle (0, 0, 100, 100), new SizeF (1.5f, 1.5f), BoundsSpecified.All);
  500. Assert.IsFalse (c.IsHandleCreated, "A8");
  501. #endif
  502. c.PublicGetStyle (ControlStyles.FixedHeight);
  503. Assert.IsFalse (c.IsHandleCreated, "A9");
  504. c.PublicGetTopLevel ();
  505. Assert.IsFalse (c.IsHandleCreated, "A10");
  506. c.PublicInitLayout ();
  507. Assert.IsFalse (c.IsHandleCreated, "A11");
  508. c.PublicInvokeGotFocus (c, EventArgs.Empty);
  509. Assert.IsFalse (c.IsHandleCreated, "A12");
  510. c.PublicInvokeLostFocus (c, EventArgs.Empty);
  511. Assert.IsFalse (c.IsHandleCreated, "A13");
  512. c.PublicInvokeOnClick (c, EventArgs.Empty);
  513. Assert.IsFalse (c.IsHandleCreated, "A14");
  514. c.PublicInvokePaint (c, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
  515. Assert.IsFalse (c.IsHandleCreated, "A15");
  516. c.PublicInvokePaintBackground (c, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
  517. Assert.IsFalse (c.IsHandleCreated, "A16");
  518. c.PublicIsInputChar ('c');
  519. Assert.IsTrue (c.IsHandleCreated, "A17");
  520. c = new ProtectedMethodsControl ();
  521. c.PublicIsInputKey (Keys.B);
  522. Assert.IsFalse (c.IsHandleCreated, "A18");
  523. c.PublicNotifyInvalidate (Rectangle.Empty);
  524. Assert.IsFalse (c.IsHandleCreated, "A19");
  525. Form f = new Form ();
  526. f.Controls.Add (c);
  527. c.PublicOnVisibleChanged (EventArgs.Empty);
  528. Assert.IsFalse (c.IsHandleCreated, "A20");
  529. c = new ProtectedMethodsControl ();
  530. c.PublicRaiseDragEvent (null, null);
  531. Assert.IsFalse (c.IsHandleCreated, "A21");
  532. c.PublicRaiseKeyEvent (null, null);
  533. Assert.IsFalse (c.IsHandleCreated, "A22");
  534. c.PublicRaiseMouseEvent (null, null);
  535. Assert.IsFalse (c.IsHandleCreated, "A23");
  536. c.PublicRaisePaintEvent (null, null);
  537. Assert.IsFalse (c.IsHandleCreated, "A24");
  538. c.PublicRecreateHandle ();
  539. Assert.IsFalse (c.IsHandleCreated, "A25");
  540. c.PublicResetMouseEventArgs ();
  541. Assert.IsFalse (c.IsHandleCreated, "A26");
  542. c.PublicRtlTranslateAlignment (ContentAlignment.BottomLeft);
  543. Assert.IsFalse (c.IsHandleCreated, "A27");
  544. c.PublicRtlTranslateContent (ContentAlignment.BottomLeft);
  545. Assert.IsFalse (c.IsHandleCreated, "A28");
  546. c.PublicRtlTranslateHorizontal (HorizontalAlignment.Left);
  547. Assert.IsFalse (c.IsHandleCreated, "A29");
  548. c.PublicRtlTranslateLeftRight (LeftRightAlignment.Left);
  549. Assert.IsFalse (c.IsHandleCreated, "A30");
  550. #if !__MonoCS__
  551. c.PublicScaleControl (new SizeF (1.5f, 1.5f), BoundsSpecified.All);
  552. Assert.IsFalse (c.IsHandleCreated, "A31");
  553. #endif
  554. c.PublicScaleCore (1.5f, 1.5f);
  555. Assert.IsFalse (c.IsHandleCreated, "A32");
  556. c.PublicSelect ();
  557. Assert.IsFalse (c.IsHandleCreated, "A33");
  558. #if !__MonoCS__
  559. c.PublicSetAutoSizeMode (AutoSizeMode.GrowAndShrink);
  560. Assert.IsFalse (c.IsHandleCreated, "A34");
  561. #endif
  562. c.PublicSetBoundsCore (0, 0, 100, 100, BoundsSpecified.All);
  563. Assert.IsFalse (c.IsHandleCreated, "A35");
  564. c.PublicSetClientSizeCore (122, 122);
  565. Assert.IsFalse (c.IsHandleCreated, "A36");
  566. c.PublicSetStyle (ControlStyles.FixedHeight, true);
  567. Assert.IsFalse (c.IsHandleCreated, "A37");
  568. c.PublicSetTopLevel (true);
  569. Assert.IsTrue (c.IsHandleCreated, "A38");
  570. c = new ProtectedMethodsControl ();
  571. c.PublicSetVisibleCore (true);
  572. Assert.IsFalse (c.IsHandleCreated, "A39");
  573. #if NET_2_0
  574. c.PublicSizeFromClientSize (new Size (160, 160));
  575. Assert.IsFalse (c.IsHandleCreated, "A40");
  576. #endif
  577. c.PublicUpdateBounds ();
  578. Assert.IsFalse (c.IsHandleCreated, "A41");
  579. c.PublicUpdateStyles ();
  580. Assert.IsFalse (c.IsHandleCreated, "A42");
  581. c.PublicUpdateZOrder ();
  582. Assert.IsFalse (c.IsHandleCreated, "A43");
  583. }
  584. private class ProtectedMethodsControl : Control
  585. {
  586. public void PublicAccessibilityNotifyClients (AccessibleEvents accEvent, int childID) { base.AccessibilityNotifyClients (accEvent, childID); }
  587. public void PublicCreateAccessibilityInstance () { base.CreateAccessibilityInstance (); }
  588. public void PublicCreateControlsInstance () { base.CreateControlsInstance (); }
  589. public void PublicCreateHandle () { base.CreateHandle (); }
  590. public void PublicDestroyHandle () { base.DestroyHandle (); }
  591. #if NET_2_0
  592. public AccessibleObject PublicGetAccessibilityObjectById (int objectId) { return base.GetAccessibilityObjectById (objectId); }
  593. #endif
  594. #if !__MonoCS__
  595. public AutoSizeMode PublicGetAutoSizeMode () { return base.GetAutoSizeMode (); }
  596. public Rectangle PublicGetScaledBounds (Rectangle bounds, SizeF factor, BoundsSpecified specified) { return base.GetScaledBounds (bounds, factor, specified); }
  597. #endif
  598. public bool PublicGetStyle (ControlStyles flag) { return base.GetStyle (flag); }
  599. public bool PublicGetTopLevel () { return base.GetTopLevel (); }
  600. public void PublicInitLayout () { base.InitLayout (); }
  601. public void PublicInvokeGotFocus (Control toInvoke, EventArgs e) { base.InvokeGotFocus (toInvoke, e); }
  602. public void PublicInvokeLostFocus (Control toInvoke, EventArgs e) { base.InvokeLostFocus (toInvoke, e); }
  603. public void PublicInvokeOnClick (Control toInvoke, EventArgs e) { base.InvokeOnClick (toInvoke, e); }
  604. public void PublicInvokePaint (Control c, PaintEventArgs e) { base.InvokePaint (c, e); }
  605. public void PublicInvokePaintBackground (Control c, PaintEventArgs e) { base.InvokePaintBackground (c, e); }
  606. public bool PublicIsInputChar (char charCode) { return base.IsInputChar (charCode); }
  607. public bool PublicIsInputKey (Keys keyData) { return base.IsInputKey (keyData); }
  608. public void PublicNotifyInvalidate (Rectangle invalidatedArea) { base.NotifyInvalidate (invalidatedArea); }
  609. public void PublicOnVisibleChanged (EventArgs e) { base.OnVisibleChanged (e); }
  610. public void PublicRaiseDragEvent (Object key, DragEventArgs e) { base.RaiseDragEvent (key, e); }
  611. public void PublicRaiseKeyEvent (Object key, KeyEventArgs e) { base.RaiseKeyEvent (key, e); }
  612. public void PublicRaiseMouseEvent (Object key, MouseEventArgs e) { base.RaiseMouseEvent (key, e); }
  613. public void PublicRaisePaintEvent (Object key, PaintEventArgs e) { base.RaisePaintEvent (key, e); }
  614. public void PublicRecreateHandle () { base.RecreateHandle (); }
  615. public void PublicResetMouseEventArgs () { base.ResetMouseEventArgs (); }
  616. public ContentAlignment PublicRtlTranslateAlignment (ContentAlignment align) { return base.RtlTranslateAlignment (align); }
  617. public ContentAlignment PublicRtlTranslateContent (ContentAlignment align) { return base.RtlTranslateContent (align); }
  618. public HorizontalAlignment PublicRtlTranslateHorizontal (HorizontalAlignment align) { return base.RtlTranslateHorizontal (align); }
  619. public LeftRightAlignment PublicRtlTranslateLeftRight (LeftRightAlignment align) { return base.RtlTranslateLeftRight (align); }
  620. #if !__MonoCS__
  621. public void PublicScaleControl (SizeF factor, BoundsSpecified specified) { base.ScaleControl (factor, specified); }
  622. #endif
  623. public void PublicScaleCore (float dx, float dy) { base.ScaleCore (dx, dy); }
  624. public void PublicSelect () { base.Select (); }
  625. #if !__MonoCS__
  626. public void PublicSetAutoSizeMode (AutoSizeMode mode) { base.SetAutoSizeMode (mode); }
  627. #endif
  628. public void PublicSetBoundsCore (int x, int y, int width, int height, BoundsSpecified specified) { base.SetBoundsCore (x, y, width, height, specified); }
  629. public void PublicSetClientSizeCore (int x, int y) { base.SetClientSizeCore (x, y); }
  630. public void PublicSetStyle (ControlStyles flag, bool value) { base.SetStyle (flag, value); }
  631. public void PublicSetTopLevel (bool value) { base.SetTopLevel (value); }
  632. public void PublicSetVisibleCore (bool value) { base.SetVisibleCore (value); }
  633. #if NET_2_0
  634. public Size PublicSizeFromClientSize (Size clientSize) { return base.SizeFromClientSize (clientSize); }
  635. #endif
  636. public void PublicUpdateBounds () { base.UpdateBounds (); }
  637. public void PublicUpdateStyles () { base.UpdateStyles (); }
  638. public void PublicUpdateZOrder () { base.UpdateZOrder (); }
  639. }
  640. }
  641. }