ControlHandleTest.cs 23 KB

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