ControlHandleTest.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676
  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__ && NET_2_0
  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__ && NET_2_0
  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__ && NET_2_0
  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__ && NET_2_0
  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__ && NET_2_0
  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 += new EventHandler (HandleCreated_WriteStackTrace);
  427. c.Show ();
  428. Assert.IsFalse (c.IsHandleCreated, "A2");
  429. }
  430. void HandleCreated_WriteStackTrace (object sender, EventArgs e)
  431. {
  432. Console.WriteLine (Environment.StackTrace);
  433. }
  434. public delegate void InvokeDelegate ();
  435. public void InvokeMethod () { invokecontrol.Text = "methodinvoked"; }
  436. [Test]
  437. [ExpectedException (typeof (InvalidOperationException))]
  438. public void InvokeIOE ()
  439. {
  440. Control c = new Control ();
  441. c.Invoke (new InvokeDelegate (InvokeMethod));
  442. }
  443. private class ProtectedPropertyControl : Control
  444. {
  445. #if !__MonoCS__ && NET_2_0
  446. public bool PublicCanRaiseEvents { get { return base.CanRaiseEvents; } }
  447. #endif
  448. public CreateParams PublicCreateParams { get { return base.CreateParams; } }
  449. #if NET_2_0
  450. public Cursor PublicDefaultCursor { get { return base.DefaultCursor; } }
  451. #endif
  452. public ImeMode PublicDefaultImeMode { get { return base.DefaultImeMode; } }
  453. #if NET_2_0
  454. public Padding PublicDefaultMargin { get { return base.DefaultMargin; } }
  455. public Size PublicDefaultMaximumSize { get { return base.DefaultMaximumSize; } }
  456. public Size PublicDefaultMinimumSize { get { return base.DefaultMinimumSize; } }
  457. public Padding PublicDefaultPadding { get { return base.DefaultPadding; } }
  458. public Size PublicDefaultSize { get { return base.DefaultSize; } }
  459. public bool PublicDoubleBuffered { get { return base.DoubleBuffered; } set { base.DoubleBuffered = value; } }
  460. #endif
  461. public int PublicFontHeight { get { return base.FontHeight; } set { base.FontHeight = value; } }
  462. public bool PublicRenderRightToLeft { get { return base.RenderRightToLeft; } }
  463. public bool PublicResizeRedraw { get { return base.ResizeRedraw; } set { base.ResizeRedraw = value; } }
  464. #if !__MonoCS__ && NET_2_0
  465. public bool PublicScaleChildren { get { return base.ScaleChildren; } }
  466. #endif
  467. public bool PublicShowFocusCues { get { return base.ShowFocusCues; } }
  468. public bool PublicShowKeyboardCues { get { return base.ShowKeyboardCues; } }
  469. }
  470. [Test]
  471. public void TestProtectedMethods ()
  472. {
  473. // Protected Methods that force Handle creation:
  474. // - CreateAccessibilityInstance ()
  475. // - CreateHandle ()
  476. // - IsInputChar ()
  477. // - SetTopLevel ()
  478. ProtectedMethodsControl c = new ProtectedMethodsControl ();
  479. c.PublicAccessibilityNotifyClients (AccessibleEvents.Focus, 0);
  480. #if NET_2_0
  481. Assert.IsFalse (c.IsHandleCreated, "A1");
  482. #else
  483. Assert.IsTrue (c.IsHandleCreated, "A1");
  484. #endif
  485. c.PublicCreateAccessibilityInstance ();
  486. Assert.IsTrue (c.IsHandleCreated, "A2");
  487. c = new ProtectedMethodsControl ();
  488. c.PublicCreateControlsInstance ();
  489. Assert.IsFalse (c.IsHandleCreated, "A3");
  490. c.PublicCreateHandle ();
  491. Assert.IsTrue (c.IsHandleCreated, "A4");
  492. c = new ProtectedMethodsControl ();
  493. c.PublicDestroyHandle ();
  494. Assert.IsFalse (c.IsHandleCreated, "A5");
  495. c = new ProtectedMethodsControl ();
  496. #if NET_2_0
  497. c.PublicGetAccessibilityObjectById (0);
  498. Assert.IsFalse (c.IsHandleCreated, "A6");
  499. #endif
  500. #if !__MonoCS__ && NET_2_0
  501. c.PublicGetAutoSizeMode ();
  502. Assert.IsFalse (c.IsHandleCreated, "A7");
  503. c.PublicGetScaledBounds (new Rectangle (0, 0, 100, 100), new SizeF (1.5f, 1.5f), BoundsSpecified.All);
  504. Assert.IsFalse (c.IsHandleCreated, "A8");
  505. #endif
  506. c.PublicGetStyle (ControlStyles.FixedHeight);
  507. Assert.IsFalse (c.IsHandleCreated, "A9");
  508. c.PublicGetTopLevel ();
  509. Assert.IsFalse (c.IsHandleCreated, "A10");
  510. c.PublicInitLayout ();
  511. Assert.IsFalse (c.IsHandleCreated, "A11");
  512. c.PublicInvokeGotFocus (c, EventArgs.Empty);
  513. Assert.IsFalse (c.IsHandleCreated, "A12");
  514. c.PublicInvokeLostFocus (c, EventArgs.Empty);
  515. Assert.IsFalse (c.IsHandleCreated, "A13");
  516. c.PublicInvokeOnClick (c, EventArgs.Empty);
  517. Assert.IsFalse (c.IsHandleCreated, "A14");
  518. c.PublicInvokePaint (c, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
  519. Assert.IsFalse (c.IsHandleCreated, "A15");
  520. c.PublicInvokePaintBackground (c, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
  521. Assert.IsFalse (c.IsHandleCreated, "A16");
  522. c.PublicIsInputChar ('c');
  523. Assert.IsTrue (c.IsHandleCreated, "A17");
  524. c = new ProtectedMethodsControl ();
  525. c.PublicIsInputKey (Keys.B);
  526. Assert.IsFalse (c.IsHandleCreated, "A18");
  527. c.PublicNotifyInvalidate (Rectangle.Empty);
  528. Assert.IsFalse (c.IsHandleCreated, "A19");
  529. Form f = new Form ();
  530. f.Controls.Add (c);
  531. c.PublicOnVisibleChanged (EventArgs.Empty);
  532. Assert.IsFalse (c.IsHandleCreated, "A20");
  533. c = new ProtectedMethodsControl ();
  534. c.PublicRaiseDragEvent (null, null);
  535. Assert.IsFalse (c.IsHandleCreated, "A21");
  536. c.PublicRaiseKeyEvent (null, null);
  537. Assert.IsFalse (c.IsHandleCreated, "A22");
  538. c.PublicRaiseMouseEvent (null, null);
  539. Assert.IsFalse (c.IsHandleCreated, "A23");
  540. c.PublicRaisePaintEvent (null, null);
  541. Assert.IsFalse (c.IsHandleCreated, "A24");
  542. c.PublicRecreateHandle ();
  543. Assert.IsFalse (c.IsHandleCreated, "A25");
  544. c.PublicResetMouseEventArgs ();
  545. Assert.IsFalse (c.IsHandleCreated, "A26");
  546. c.PublicRtlTranslateAlignment (ContentAlignment.BottomLeft);
  547. Assert.IsFalse (c.IsHandleCreated, "A27");
  548. c.PublicRtlTranslateContent (ContentAlignment.BottomLeft);
  549. Assert.IsFalse (c.IsHandleCreated, "A28");
  550. c.PublicRtlTranslateHorizontal (HorizontalAlignment.Left);
  551. Assert.IsFalse (c.IsHandleCreated, "A29");
  552. c.PublicRtlTranslateLeftRight (LeftRightAlignment.Left);
  553. Assert.IsFalse (c.IsHandleCreated, "A30");
  554. #if !__MonoCS__ && NET_2_0
  555. c.PublicScaleControl (new SizeF (1.5f, 1.5f), BoundsSpecified.All);
  556. Assert.IsFalse (c.IsHandleCreated, "A31");
  557. #endif
  558. c.PublicScaleCore (1.5f, 1.5f);
  559. Assert.IsFalse (c.IsHandleCreated, "A32");
  560. c.PublicSelect ();
  561. Assert.IsFalse (c.IsHandleCreated, "A33");
  562. #if !__MonoCS__ && NET_2_0
  563. c.PublicSetAutoSizeMode (AutoSizeMode.GrowAndShrink);
  564. Assert.IsFalse (c.IsHandleCreated, "A34");
  565. #endif
  566. c.PublicSetBoundsCore (0, 0, 100, 100, BoundsSpecified.All);
  567. Assert.IsFalse (c.IsHandleCreated, "A35");
  568. c.PublicSetClientSizeCore (122, 122);
  569. Assert.IsFalse (c.IsHandleCreated, "A36");
  570. c.PublicSetStyle (ControlStyles.FixedHeight, true);
  571. Assert.IsFalse (c.IsHandleCreated, "A37");
  572. c.PublicSetTopLevel (true);
  573. Assert.IsTrue (c.IsHandleCreated, "A38");
  574. c = new ProtectedMethodsControl ();
  575. c.PublicSetVisibleCore (true);
  576. Assert.IsFalse (c.IsHandleCreated, "A39");
  577. #if NET_2_0
  578. c.PublicSizeFromClientSize (new Size (160, 160));
  579. Assert.IsFalse (c.IsHandleCreated, "A40");
  580. #endif
  581. c.PublicUpdateBounds ();
  582. Assert.IsFalse (c.IsHandleCreated, "A41");
  583. c.PublicUpdateStyles ();
  584. Assert.IsFalse (c.IsHandleCreated, "A42");
  585. c.PublicUpdateZOrder ();
  586. Assert.IsFalse (c.IsHandleCreated, "A43");
  587. }
  588. private class ProtectedMethodsControl : Control
  589. {
  590. public void PublicAccessibilityNotifyClients (AccessibleEvents accEvent, int childID) { base.AccessibilityNotifyClients (accEvent, childID); }
  591. public void PublicCreateAccessibilityInstance () { base.CreateAccessibilityInstance (); }
  592. public void PublicCreateControlsInstance () { base.CreateControlsInstance (); }
  593. public void PublicCreateHandle () { base.CreateHandle (); }
  594. public void PublicDestroyHandle () { base.DestroyHandle (); }
  595. #if NET_2_0
  596. public AccessibleObject PublicGetAccessibilityObjectById (int objectId) { return base.GetAccessibilityObjectById (objectId); }
  597. #endif
  598. #if !__MonoCS__ && NET_2_0
  599. public AutoSizeMode PublicGetAutoSizeMode () { return base.GetAutoSizeMode (); }
  600. public Rectangle PublicGetScaledBounds (Rectangle bounds, SizeF factor, BoundsSpecified specified) { return base.GetScaledBounds (bounds, factor, specified); }
  601. #endif
  602. public bool PublicGetStyle (ControlStyles flag) { return base.GetStyle (flag); }
  603. public bool PublicGetTopLevel () { return base.GetTopLevel (); }
  604. public void PublicInitLayout () { base.InitLayout (); }
  605. public void PublicInvokeGotFocus (Control toInvoke, EventArgs e) { base.InvokeGotFocus (toInvoke, e); }
  606. public void PublicInvokeLostFocus (Control toInvoke, EventArgs e) { base.InvokeLostFocus (toInvoke, e); }
  607. public void PublicInvokeOnClick (Control toInvoke, EventArgs e) { base.InvokeOnClick (toInvoke, e); }
  608. public void PublicInvokePaint (Control c, PaintEventArgs e) { base.InvokePaint (c, e); }
  609. public void PublicInvokePaintBackground (Control c, PaintEventArgs e) { base.InvokePaintBackground (c, e); }
  610. public bool PublicIsInputChar (char charCode) { return base.IsInputChar (charCode); }
  611. public bool PublicIsInputKey (Keys keyData) { return base.IsInputKey (keyData); }
  612. public void PublicNotifyInvalidate (Rectangle invalidatedArea) { base.NotifyInvalidate (invalidatedArea); }
  613. public void PublicOnVisibleChanged (EventArgs e) { base.OnVisibleChanged (e); }
  614. public void PublicRaiseDragEvent (Object key, DragEventArgs e) { base.RaiseDragEvent (key, e); }
  615. public void PublicRaiseKeyEvent (Object key, KeyEventArgs e) { base.RaiseKeyEvent (key, e); }
  616. public void PublicRaiseMouseEvent (Object key, MouseEventArgs e) { base.RaiseMouseEvent (key, e); }
  617. public void PublicRaisePaintEvent (Object key, PaintEventArgs e) { base.RaisePaintEvent (key, e); }
  618. public void PublicRecreateHandle () { base.RecreateHandle (); }
  619. public void PublicResetMouseEventArgs () { base.ResetMouseEventArgs (); }
  620. public ContentAlignment PublicRtlTranslateAlignment (ContentAlignment align) { return base.RtlTranslateAlignment (align); }
  621. public ContentAlignment PublicRtlTranslateContent (ContentAlignment align) { return base.RtlTranslateContent (align); }
  622. public HorizontalAlignment PublicRtlTranslateHorizontal (HorizontalAlignment align) { return base.RtlTranslateHorizontal (align); }
  623. public LeftRightAlignment PublicRtlTranslateLeftRight (LeftRightAlignment align) { return base.RtlTranslateLeftRight (align); }
  624. #if !__MonoCS__ && NET_2_0
  625. public void PublicScaleControl (SizeF factor, BoundsSpecified specified) { base.ScaleControl (factor, specified); }
  626. #endif
  627. public void PublicScaleCore (float dx, float dy) { base.ScaleCore (dx, dy); }
  628. public void PublicSelect () { base.Select (); }
  629. #if !__MonoCS__ && NET_2_0
  630. public void PublicSetAutoSizeMode (AutoSizeMode mode) { base.SetAutoSizeMode (mode); }
  631. #endif
  632. public void PublicSetBoundsCore (int x, int y, int width, int height, BoundsSpecified specified) { base.SetBoundsCore (x, y, width, height, specified); }
  633. public void PublicSetClientSizeCore (int x, int y) { base.SetClientSizeCore (x, y); }
  634. public void PublicSetStyle (ControlStyles flag, bool value) { base.SetStyle (flag, value); }
  635. public void PublicSetTopLevel (bool value) { base.SetTopLevel (value); }
  636. public void PublicSetVisibleCore (bool value) { base.SetVisibleCore (value); }
  637. #if NET_2_0
  638. public Size PublicSizeFromClientSize (Size clientSize) { return base.SizeFromClientSize (clientSize); }
  639. #endif
  640. public void PublicUpdateBounds () { base.UpdateBounds (); }
  641. public void PublicUpdateStyles () { base.UpdateStyles (); }
  642. public void PublicUpdateZOrder () { base.UpdateZOrder (); }
  643. }
  644. }
  645. }