ControlHandleTest.cs 23 KB

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