FormTest.cs 40 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148
  1. //
  2. // FormTest.cs: Test cases for Form.
  3. //
  4. // Author:
  5. // Ritvik Mayank ([email protected])
  6. //
  7. // (C) 2005 Novell, Inc. (http://www.novell.com)
  8. //
  9. using System;
  10. using System.ComponentModel;
  11. using System.Drawing;
  12. using System.Reflection;
  13. using System.Windows.Forms;
  14. using NUnit.Framework;
  15. using CategoryAttribute = NUnit.Framework.CategoryAttribute;
  16. namespace MonoTests.System.Windows.Forms
  17. {
  18. [TestFixture]
  19. public class FormTest
  20. {
  21. [Test] // bug #80791
  22. public void ClientSizeTest ()
  23. {
  24. Form form = new Form ();
  25. Assert.IsFalse (form.ClientSize == form.Size);
  26. }
  27. [Test] // bug #80574
  28. public void FormBorderStyleTest ()
  29. {
  30. Form form = new Form ();
  31. Rectangle boundsBeforeBorderStyleChange = form.Bounds;
  32. Rectangle clientRectangleBeforeBorderStyleChange = form.ClientRectangle;
  33. form.FormBorderStyle = FormBorderStyle.None;
  34. Assert.AreEqual (form.Bounds, boundsBeforeBorderStyleChange, "#A1");
  35. Assert.AreEqual (form.ClientRectangle, clientRectangleBeforeBorderStyleChange, "#A2");
  36. form.Visible = true;
  37. form.FormBorderStyle = FormBorderStyle.Sizable;
  38. boundsBeforeBorderStyleChange = form.Bounds;
  39. clientRectangleBeforeBorderStyleChange = form.ClientRectangle;
  40. form.FormBorderStyle = FormBorderStyle.None;
  41. Assert.IsFalse (form.Bounds == boundsBeforeBorderStyleChange, "#B1");
  42. Assert.AreEqual (form.ClientRectangle, clientRectangleBeforeBorderStyleChange, "#B2");
  43. form.Visible = false;
  44. form.FormBorderStyle = FormBorderStyle.Sizable;
  45. boundsBeforeBorderStyleChange = form.Bounds;
  46. clientRectangleBeforeBorderStyleChange = form.ClientRectangle;
  47. form.FormBorderStyle = FormBorderStyle.None;
  48. Assert.IsFalse (form.Bounds == boundsBeforeBorderStyleChange, "#C1");
  49. Assert.AreEqual (form.ClientRectangle, clientRectangleBeforeBorderStyleChange, "#C2");
  50. }
  51. [Test]
  52. public void MaximizedParentedFormTest ()
  53. {
  54. using (Form Main = new Form ()) {
  55. Form Child = new Form ();
  56. Child.TopLevel = false;
  57. Main.Controls.Add (Child);
  58. Main.ShowInTaskbar = false;
  59. Main.Show ();
  60. Child.WindowState = FormWindowState.Maximized;
  61. // The exact negative value depends on the border with, but it should always be < 0.
  62. Assert.IsTrue (Child.Location.X < 0 && Child.Location.Y < 0, "#A1");
  63. }
  64. }
  65. [Test]
  66. [Category ("NotWorking")]
  67. public void FormCreateParamsStyleTest ()
  68. {
  69. Form frm;
  70. using (frm = new Form ()) {
  71. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles) TestHelper.GetCreateParams (frm).Style), "#01-Style");
  72. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles) TestHelper.GetCreateParams (frm).ExStyle), "#01-ExStyle");
  73. }
  74. using (frm = new Form ()) {
  75. frm.AllowDrop = !frm.AllowDrop;
  76. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#02-Style");
  77. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#02-ExStyle");
  78. }
  79. using (frm = new Form ()) {
  80. frm.AllowTransparency = !frm.AllowTransparency;
  81. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#03-Style");
  82. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW | WindowExStyles.WS_EX_LAYERED, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#03-ExStyle");
  83. }
  84. using (frm = new Form ()) {
  85. frm.Opacity = 0.50;
  86. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#04-Style");
  87. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW | WindowExStyles.WS_EX_LAYERED, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#04-ExStyle");
  88. }
  89. using (frm = new Form ()) {
  90. frm.TransparencyKey = Color.Cyan;
  91. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#05-Style");
  92. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW | WindowExStyles.WS_EX_LAYERED, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#05-ExStyle");
  93. }
  94. using (frm = new Form ()) {
  95. frm.CausesValidation = !frm.CausesValidation;
  96. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#06-Style");
  97. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#06-ExStyle");
  98. }
  99. using (frm = new Form ()) {
  100. frm.ControlBox = !frm.ControlBox;
  101. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_THICKFRAME | WindowStyles.WS_BORDER | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#07-Style");
  102. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#07-ExStyle");
  103. }
  104. using (frm = new Form ()) {
  105. frm.Enabled = true;
  106. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#08-Style");
  107. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#08-ExStyle");
  108. }
  109. using (frm = new Form ()) {
  110. frm.FormBorderStyle = FormBorderStyle.Fixed3D;
  111. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#10-Style");
  112. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CLIENTEDGE | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#10-ExStyle");
  113. }
  114. using (frm = new Form ()) {
  115. frm.FormBorderStyle = FormBorderStyle.FixedDialog;
  116. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#11-Style");
  117. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_DLGMODALFRAME | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#11-ExStyle");
  118. }
  119. using (frm = new Form ()) {
  120. frm.FormBorderStyle = FormBorderStyle.FixedSingle;
  121. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#12-Style");
  122. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#12-ExStyle");
  123. }
  124. using (frm = new Form ()) {
  125. frm.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  126. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_GROUP | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#13-Style");
  127. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_TOOLWINDOW | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#13-ExStyle");
  128. }
  129. using (frm = new Form ()) {
  130. frm.FormBorderStyle = FormBorderStyle.None;
  131. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#14-Style");
  132. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#14-ExStyle");
  133. }
  134. using (frm = new Form ()) {
  135. frm.FormBorderStyle = FormBorderStyle.Sizable;
  136. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#15-Style");
  137. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#15-ExStyle");
  138. }
  139. using (frm = new Form ()) {
  140. frm.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  141. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#16-Style");
  142. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_TOOLWINDOW | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#16-ExStyle");
  143. }
  144. using (frm = new Form ()) {
  145. frm.HelpButton = !frm.HelpButton;
  146. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#17-Style");
  147. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#17-ExStyle");
  148. }
  149. using (frm = new Form ()) {
  150. frm.Icon = null;
  151. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#18-Style");
  152. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#18-ExStyle");
  153. }
  154. using (frm = new Form ()) {
  155. frm.Icon = SystemIcons.Asterisk;
  156. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#19-Style");
  157. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#19-ExStyle");
  158. }
  159. using (frm = new Form ()) {
  160. frm.IsMdiContainer = !frm.IsMdiContainer;
  161. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#20-Style");
  162. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#20-ExStyle");
  163. }
  164. using (frm = new Form ()) {
  165. frm.MaximizeBox = !frm.MaximizeBox;
  166. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_GROUP | WindowStyles.WS_THICKFRAME | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#21-Style");
  167. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#21-ExStyle");
  168. }
  169. using (frm = new Form ()) {
  170. frm.MinimizeBox = !frm.MinimizeBox;
  171. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TABSTOP | WindowStyles.WS_THICKFRAME | WindowStyles.WS_SYSMENU | WindowStyles.WS_CAPTION | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#22-Style");
  172. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#22-ExStyle");
  173. }
  174. #if NET_2_0
  175. using (frm = new Form ()) {
  176. frm.ShowIcon = !frm.ShowIcon;
  177. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#23-Style");
  178. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_DLGMODALFRAME | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#23-ExStyle");
  179. }
  180. #endif
  181. using (frm = new Form ()) {
  182. frm.ShowInTaskbar = !frm.ShowInTaskbar;
  183. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#24-Style");
  184. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#24-ExStyle");
  185. }
  186. using (frm = new Form ()) {
  187. frm.TabStop = !frm.TabStop;
  188. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#25-Style");
  189. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#25-ExStyle");
  190. }
  191. using (frm = new Form ()) {
  192. frm.TopLevel = !frm.TopLevel;
  193. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN | WindowStyles.WS_CLIPSIBLINGS | WindowStyles.WS_CHILD, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#26-Style");
  194. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#26-ExStyle");
  195. }
  196. using (frm = new Form ()) {
  197. frm.Visible = !frm.Visible;
  198. Assert.AreEqual (WindowStyles.WS_TILED | WindowStyles.WS_TILEDWINDOW | WindowStyles.WS_CLIPCHILDREN, ((WindowStyles)TestHelper.GetCreateParams (frm).Style), "#27-Style");
  199. Assert.AreEqual (WindowExStyles.WS_EX_LEFT | WindowExStyles.WS_EX_RIGHTSCROLLBAR | WindowExStyles.WS_EX_CONTROLPARENT | WindowExStyles.WS_EX_APPWINDOW, ((WindowExStyles)TestHelper.GetCreateParams (frm).ExStyle), "#27-ExStyle");
  200. }
  201. }
  202. [Test]
  203. public void FormParentedTest ()
  204. {
  205. using (Form frm = new Form ()) {
  206. Form frm2 = new Form ();
  207. frm2.TopLevel = false;
  208. frm.ShowInTaskbar = false;
  209. frm2.ShowInTaskbar = false;
  210. frm2.Visible = true;
  211. frm.Visible = true;
  212. EventLogger log = new EventLogger (frm);
  213. EventLogger log2 = new EventLogger (frm2);
  214. frm.Controls.Add (frm2);
  215. Assert.IsTrue (log2.EventRaised ("ParentChanged"), "#C1");
  216. Assert.IsTrue (log.EventRaised ("ControlAdded"), "#P1");
  217. Assert.AreSame (frm, frm2.Parent, "#02");
  218. }
  219. }
  220. [Test]
  221. public void FormPropertyTest ()
  222. {
  223. Form myform = new Form ();
  224. myform.Visible = true;
  225. myform.Text = "NewForm";
  226. myform.Name = "FormTest";
  227. Assert.IsNull (myform.AcceptButton, "#1");
  228. Assert.IsNull (myform.ActiveMdiChild, "#2");
  229. Assert.IsFalse (myform.AutoScale, "#3");
  230. Assert.IsNull (myform.CancelButton, "#6");
  231. Assert.IsTrue (myform.ControlBox, "#9");
  232. Assert.IsTrue (myform.DesktopBounds.X > 0, "#10a");
  233. Assert.IsTrue (myform.DesktopBounds.Y > 0, "#10b");
  234. Assert.AreEqual (300, myform.DesktopBounds.Height, "#10c");
  235. Assert.AreEqual (300, myform.DesktopBounds.Width, "#10d");
  236. Assert.IsTrue (myform.DesktopLocation.X > 0, "#11a");
  237. Assert.IsTrue (myform.DesktopLocation.Y > 0, "#11b");
  238. Assert.AreEqual (DialogResult.None, myform.DialogResult, "#12");
  239. Assert.AreEqual (FormBorderStyle.Sizable, myform.FormBorderStyle, "#13");
  240. Assert.IsFalse (myform.HelpButton, "#14");
  241. Assert.AreEqual ("System.Drawing.Icon", myform.Icon.GetType ().ToString (), "#15");
  242. Assert.IsFalse (myform.IsMdiChild, "#16");
  243. Assert.IsFalse (myform.IsMdiContainer, "#17");
  244. Assert.IsFalse (myform.KeyPreview, "#18");
  245. Assert.IsTrue (myform.MaximizeBox, "#19");
  246. Assert.AreEqual (0, myform.MaximumSize.Height, "#20a");
  247. Assert.AreEqual (0, myform.MaximumSize.Width, "#20b");
  248. Assert.AreEqual (0, myform.MdiChildren.Length, "#21a");
  249. Assert.AreEqual (1, myform.MdiChildren.Rank, "#21b");
  250. Assert.IsFalse (myform.MdiChildren.IsSynchronized, "#21c");
  251. Assert.IsNull (myform.MdiParent, "#22");
  252. Assert.IsNull (myform.Menu, "#23");
  253. Assert.IsNull (myform.MergedMenu, "#24");
  254. Assert.IsTrue (myform.MinimizeBox, "#25");
  255. Assert.AreEqual (0, myform.MinimumSize.Height, "#26a");
  256. Assert.AreEqual (0, myform.MinimumSize.Width, "#26b");
  257. Assert.IsTrue (myform.MinimumSize.IsEmpty, "#26c");
  258. Assert.IsFalse (myform.Modal, "#27");
  259. Assert.AreEqual (1, myform.Opacity, "#28");
  260. Assert.AreEqual (0, myform.OwnedForms.Length, "#29a");
  261. Assert.AreEqual (1, myform.OwnedForms.Rank, "#29b");
  262. Assert.IsNull (myform.Owner, "#30");
  263. Assert.IsTrue (myform.ShowInTaskbar, "#31");
  264. Assert.AreEqual (300, myform.Size.Height, "#32a");
  265. Assert.AreEqual (300, myform.Size.Width, "#32b");
  266. Assert.AreEqual (SizeGripStyle.Auto, myform.SizeGripStyle, "#33");
  267. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, myform.StartPosition, "#34");
  268. Assert.IsTrue (myform.TopLevel, "#35");
  269. Assert.IsFalse (myform.TopMost, "#36");
  270. Assert.AreEqual (Color.Empty, myform.TransparencyKey, "#37");
  271. Assert.AreEqual (FormWindowState.Normal, myform.WindowState, "#38");
  272. Assert.AreEqual (ImeMode.NoControl, myform.ImeMode, "#39");
  273. myform.Dispose ();
  274. }
  275. [Test]
  276. [Category ("NotWorking")]
  277. public void ActivateTest ()
  278. {
  279. Form myform = new Form ();
  280. myform.ShowInTaskbar = false;
  281. myform.Visible = true;
  282. myform.Text = "NewForm";
  283. myform.Name = "FormTest";
  284. myform.Activate ();
  285. Assert.AreEqual (true, myform.Focus (), "#40");
  286. myform.Dispose ();
  287. }
  288. [Test]
  289. public void AddOwnedFormTest ()
  290. {
  291. Form parent = new Form ();
  292. parent.ShowInTaskbar = false;
  293. parent.Text = "NewParent";
  294. Form ownedForm = new Form ();
  295. ownedForm.ShowInTaskbar = false;
  296. ownedForm.Text = "Owned Form";
  297. parent.AddOwnedForm (ownedForm);
  298. ownedForm.Show ();
  299. Assert.AreEqual ("NewParent", ownedForm.Owner.Text, "#41");
  300. ownedForm.Dispose ();
  301. parent.Dispose ();
  302. }
  303. [Test] // bug #80020
  304. [Category ("NotWorking")]
  305. public void IsHandleCreated ()
  306. {
  307. Form main = new Form ();
  308. main.Name = "main";
  309. main.IsMdiContainer = true;
  310. main.ShowInTaskbar = false;
  311. Assert.IsFalse (main.IsHandleCreated, "#1");
  312. Form child = new Form ();
  313. child.MdiParent = main;
  314. child.WindowState = FormWindowState.Maximized;
  315. Assert.IsFalse (main.IsHandleCreated, "#2");
  316. child.Show ();
  317. Assert.IsFalse (child.IsHandleCreated, "#3");
  318. Assert.IsFalse (main.IsHandleCreated, "#4");
  319. main.Show ();
  320. Assert.IsTrue (child.IsHandleCreated, "#5");
  321. Assert.IsTrue (main.IsHandleCreated, "#6");
  322. child.Dispose ();
  323. main.Dispose ();
  324. }
  325. [Test]
  326. public void RemoveOwnedFormTest ()
  327. {
  328. Form myform = new Form ();
  329. myform.ShowInTaskbar = false;
  330. myform.Text = "NewForm";
  331. myform.Name = "FormTest";
  332. myform.RemoveOwnedForm (myform);
  333. myform.Show ();
  334. Assert.AreEqual (null, myform.Owner, "#44");
  335. myform.Dispose ();
  336. }
  337. [Test]
  338. public void SetDesktopBoundsTest ()
  339. {
  340. Form myform = new Form ();
  341. myform.ShowInTaskbar = false;
  342. myform.Visible = true;
  343. myform.Text = "NewForm";
  344. myform.Name = "FormTest";
  345. myform.SetDesktopBounds (10, 10, 200 , 200);
  346. Assert.AreEqual (200, myform.DesktopBounds.Height, "#45");
  347. myform.Dispose ();
  348. }
  349. [Test]
  350. public void SetDesktopLocationTest ()
  351. {
  352. Form myform = new Form ();
  353. myform.ShowInTaskbar = false;
  354. myform.Visible = true;
  355. myform.Text = "NewForm";
  356. myform.Name = "FormTest";
  357. myform.SetDesktopLocation (10, 10);
  358. Assert.AreEqual (10, myform.DesktopLocation.X, "#46");
  359. myform.Dispose ();
  360. }
  361. [Test]
  362. public void SetDialogResultOutOfRange ()
  363. {
  364. Form myform = new Form ();
  365. myform.ShowInTaskbar = false;
  366. try {
  367. myform.DialogResult = (DialogResult) (-1);
  368. Assert.Fail ("#48");
  369. } catch (InvalidEnumArgumentException) {
  370. }
  371. try {
  372. myform.DialogResult = (DialogResult) ((int) DialogResult.No + 1);
  373. Assert.Fail ("#49");
  374. } catch (InvalidEnumArgumentException) {
  375. }
  376. myform.Dispose ();
  377. }
  378. void myform_set_dialogresult (object sender, EventArgs e)
  379. {
  380. Form f = (Form)sender;
  381. f.DialogResult = DialogResult.OK;
  382. }
  383. void myform_close (object sender, EventArgs e)
  384. {
  385. Form f = (Form)sender;
  386. f.Close();
  387. }
  388. [Test]
  389. public void SetDialogResult ()
  390. {
  391. Form myform = new Form ();
  392. myform.ShowInTaskbar = false;
  393. myform.Visible = true;
  394. myform.DialogResult = DialogResult.Cancel;
  395. Assert.IsTrue (myform.Visible, "A1");
  396. Assert.IsFalse (myform.IsDisposed, "A2");
  397. myform.Close ();
  398. Assert.IsFalse (myform.Visible, "A3");
  399. Assert.IsTrue (myform.IsDisposed, "A4");
  400. DialogResult result;
  401. myform = new Form ();
  402. myform.ShowInTaskbar = false;
  403. myform.VisibleChanged += new EventHandler (myform_set_dialogresult);
  404. result = myform.ShowDialog ();
  405. Assert.AreEqual (result, DialogResult.OK, "A5");
  406. Assert.IsFalse (myform.Visible, "A6");
  407. Assert.IsFalse (myform.IsDisposed, "A7");
  408. myform = new Form ();
  409. myform.ShowInTaskbar = false;
  410. myform.VisibleChanged += new EventHandler (myform_close);
  411. result = myform.ShowDialog ();
  412. Assert.AreEqual (result, DialogResult.Cancel, "A8");
  413. Assert.IsFalse (myform.Visible, "A9");
  414. Assert.IsFalse (myform.IsDisposed, "A10");
  415. }
  416. [Test]
  417. public void ShowDialog_Child ()
  418. {
  419. Form main = new Form ();
  420. main.IsMdiContainer = true;
  421. Form child = new Form ();
  422. child.MdiParent = main;
  423. try {
  424. child.ShowDialog ();
  425. Assert.Fail ("#1");
  426. } catch (InvalidOperationException ex) {
  427. // Forms that are not top level forms cannot be displayed as a
  428. // modal dialog. Remove the form from any parent form before
  429. // calling ShowDialog.
  430. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
  431. Assert.IsNull (ex.InnerException, "#3");
  432. Assert.IsNotNull (ex.Message, "#4");
  433. }
  434. Assert.IsNull (child.Owner, "#5");
  435. child.Dispose ();
  436. main.Dispose ();
  437. }
  438. [Test]
  439. public void ShowDialog_Disabled ()
  440. {
  441. Form form = new Form ();
  442. form.Enabled = false;
  443. try {
  444. form.ShowDialog ();
  445. Assert.Fail ("#A1");
  446. } catch (InvalidOperationException ex) {
  447. // Forms that are not enabled cannot be displayed as a modal
  448. // dialog. Set the form's enabled property to true before
  449. // calling ShowDialog.
  450. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
  451. Assert.IsNull (ex.InnerException, "#A3");
  452. Assert.IsNotNull (ex.Message, "#A4");
  453. }
  454. Assert.IsNull (form.Owner, "#A5");
  455. form.Dispose ();
  456. Form main = new Form ();
  457. form = new Form ();
  458. form.Owner = main;
  459. form.Enabled = false;
  460. try {
  461. form.ShowDialog ();
  462. Assert.Fail ("#B1");
  463. } catch (InvalidOperationException) {
  464. }
  465. Assert.IsNotNull (form.Owner, "#B2");
  466. Assert.AreSame (main, form.Owner, "#B3");
  467. form.Dispose ();
  468. main.Dispose ();
  469. }
  470. [Test]
  471. [Category ("NotWorking")]
  472. public void ShowDialog_Owner_Circular ()
  473. {
  474. Form main = new Form ();
  475. Form child = new Form ();
  476. child.Owner = main;
  477. try {
  478. main.ShowDialog (child);
  479. Assert.Fail ("#1");
  480. } catch (ArgumentException ex) {
  481. // A circular control reference has been made. A control cannot
  482. // be owned or parented to itself
  483. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
  484. Assert.IsNull (ex.InnerException, "#3");
  485. Assert.IsNotNull (ex.Message, "#4");
  486. Assert.IsNull (ex.ParamName, "#5");
  487. }
  488. Assert.IsNull (main.Owner, "#6");
  489. main.Dispose ();
  490. child.Dispose ();
  491. }
  492. [Test] // bug #80773
  493. [Category ("NotWorking")]
  494. public void ShowDialog_Owner_Self ()
  495. {
  496. Form form = new Form ();
  497. try {
  498. form.ShowDialog (form);
  499. Assert.Fail ("#A1");
  500. } catch (ArgumentException ex) {
  501. // Forms cannot own themselves or their owners
  502. Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
  503. Assert.IsNull (ex.InnerException, "#A3");
  504. Assert.IsNotNull (ex.Message, "#A4");
  505. Assert.IsNotNull (ex.ParamName, "#A5");
  506. Assert.AreEqual ("owner", ex.ParamName, "#A6");
  507. }
  508. Assert.IsNull (form.Owner, "#A7");
  509. form.Dispose ();
  510. Form main = new Form ();
  511. form = new Form ();
  512. form.Owner = main;
  513. try {
  514. form.ShowDialog (form);
  515. Assert.Fail ("#B1");
  516. } catch (ArgumentException) {
  517. }
  518. Assert.IsNotNull (form.Owner);
  519. Assert.AreSame (main, form.Owner, "#B2");
  520. form.Dispose ();
  521. main.Dispose ();
  522. }
  523. [Test]
  524. public void ShowDialog_Visible ()
  525. {
  526. Form form = new Form ();
  527. form.ShowInTaskbar = false;
  528. form.Visible = true;
  529. try {
  530. form.ShowDialog ();
  531. Assert.Fail ("#A1");
  532. } catch (InvalidOperationException ex) {
  533. // Forms that are already visible cannot be displayed as a modal
  534. // dialog. Set the form's visible property to false before
  535. // calling ShowDialog.
  536. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
  537. Assert.IsNull (ex.InnerException, "#A3");
  538. Assert.IsNotNull (ex.Message, "#A4");
  539. }
  540. Assert.IsNull (form.Owner, "#A5");
  541. form.Dispose ();
  542. Form main = new Form ();
  543. form = new Form ();
  544. form.Owner = main;
  545. form.Visible = true;
  546. try {
  547. form.ShowDialog ();
  548. Assert.Fail ("#B1");
  549. } catch (InvalidOperationException) {
  550. }
  551. Assert.IsNotNull (form.Owner, "#B2");
  552. Assert.AreSame (main, form.Owner, "#B3");
  553. form.Dispose ();
  554. main.Dispose ();
  555. }
  556. [Test] // bug #80604
  557. [Category ("NotWorking")]
  558. public void VisibleOnLoad ()
  559. {
  560. MockForm form = new MockForm ();
  561. form.CloseOnLoad = true;
  562. Application.Run (form);
  563. Assert.IsTrue (form.VisibleOnLoad, "#1");
  564. form.Dispose ();
  565. form = new MockForm ();
  566. form.ShowInTaskbar = false;
  567. form.Show ();
  568. Assert.IsTrue (form.VisibleOnLoad, "#2");
  569. form.Dispose ();
  570. }
  571. [Test] // bug #80052
  572. [Category ("NotWorking")]
  573. public void Location ()
  574. {
  575. //
  576. // CenterParent
  577. //
  578. Form formA = new Form ();
  579. formA.ShowInTaskbar = false;
  580. formA.StartPosition = FormStartPosition.CenterParent;
  581. formA.Location = new Point (151, 251);
  582. formA.Show ();
  583. Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A1");
  584. Assert.IsFalse (formA.Location.X == 151, "#A2");
  585. Assert.IsFalse (formA.Location.Y == 251, "#A3");
  586. formA.Location = new Point (311, 221);
  587. Assert.AreEqual (FormStartPosition.CenterParent, formA.StartPosition, "#A4");
  588. Assert.AreEqual (311, formA.Location.X, "#A5");
  589. Assert.AreEqual (221, formA.Location.Y, "#A6");
  590. formA.Dispose ();
  591. //
  592. // CenterScreen
  593. //
  594. Form formB = new Form ();
  595. formB.ShowInTaskbar = false;
  596. formB.StartPosition = FormStartPosition.CenterScreen;
  597. formB.Location = new Point (151, 251);
  598. formB.Show ();
  599. Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B1");
  600. Assert.IsFalse (formB.Location.X == 151, "#B2");
  601. Assert.IsFalse (formB.Location.Y == 251, "#B3");
  602. formB.Location = new Point (311, 221);
  603. Assert.AreEqual (FormStartPosition.CenterScreen, formB.StartPosition, "#B4");
  604. Assert.AreEqual (311, formB.Location.X, "#B5");
  605. Assert.AreEqual (221, formB.Location.Y, "#B6");
  606. formB.Dispose ();
  607. //
  608. // Manual
  609. //
  610. Form formC = new Form ();
  611. formC.ShowInTaskbar = false;
  612. formC.StartPosition = FormStartPosition.Manual;
  613. formC.Location = new Point (151, 251);
  614. formC.Show ();
  615. Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C1");
  616. Assert.AreEqual (151, formC.Location.X, "#C2");
  617. Assert.AreEqual (251, formC.Location.Y, "#C3");
  618. formC.Location = new Point (311, 221);
  619. Assert.AreEqual (FormStartPosition.Manual, formC.StartPosition, "#C4");
  620. Assert.AreEqual (311, formC.Location.X, "#C5");
  621. Assert.AreEqual (221, formC.Location.Y, "#C6");
  622. formC.Dispose ();
  623. //
  624. // WindowsDefaultBounds
  625. //
  626. Form formD = new Form ();
  627. formD.ShowInTaskbar = false;
  628. formD.StartPosition = FormStartPosition.WindowsDefaultBounds;
  629. formD.Location = new Point (151, 251);
  630. formD.Show ();
  631. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D1");
  632. Assert.IsFalse (formD.Location.X == 151, "#D2");
  633. Assert.IsFalse (formD.Location.Y == 251, "#D3");
  634. formD.Location = new Point (311, 221);
  635. Assert.AreEqual (FormStartPosition.WindowsDefaultBounds, formD.StartPosition, "#D4");
  636. Assert.AreEqual (311, formD.Location.X, "#D5");
  637. Assert.AreEqual (221, formD.Location.Y, "#D6");
  638. formD.Dispose ();
  639. //
  640. // WindowsDefaultLocation
  641. //
  642. Form formE = new Form ();
  643. formE.ShowInTaskbar = false;
  644. formE.Location = new Point (151, 251);
  645. formE.Show ();
  646. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E1");
  647. Assert.IsFalse (formE.Location.X == 151, "#E2");
  648. Assert.IsFalse (formE.Location.Y == 251, "#E3");
  649. formE.Location = new Point (311, 221);
  650. Assert.AreEqual (FormStartPosition.WindowsDefaultLocation, formE.StartPosition, "#E4");
  651. Assert.AreEqual (311, formE.Location.X, "#E5");
  652. Assert.AreEqual (221, formE.Location.Y, "#E6");
  653. formE.Dispose ();
  654. }
  655. [Test]
  656. public void DisposeOwnerTest ()
  657. {
  658. Form f1 = new Form ();
  659. Form f2 = new Form ();
  660. f2.Owner = f1;
  661. f1.Dispose ();
  662. Assert.IsNull (f2.Owner, "1");
  663. Assert.AreEqual (0, f1.OwnedForms.Length, "2");
  664. }
  665. [Test]
  666. [ExpectedException (typeof (ObjectDisposedException))]
  667. public void AccessDisposedForm ()
  668. {
  669. Form myform = new Form ();
  670. myform.ShowInTaskbar = false;
  671. myform.Show ();
  672. myform.Close (); // this should result in the form being disposed
  673. myform.Show (); // and this line should result in the ODE being thrown
  674. }
  675. class MyForm : Form
  676. {
  677. public void DoDestroyHandle ()
  678. {
  679. DestroyHandle();
  680. }
  681. public void DoRecreateHandle ()
  682. {
  683. RecreateHandle();
  684. }
  685. }
  686. int handle_destroyed_count;
  687. void handle_destroyed (object sender, EventArgs e)
  688. {
  689. handle_destroyed_count++;
  690. }
  691. [Test]
  692. public void DestroyHandleTest ()
  693. {
  694. handle_destroyed_count = 0;
  695. MyForm f1 = new MyForm ();
  696. f1.HandleDestroyed += new EventHandler (handle_destroyed);
  697. f1.Show ();
  698. f1.DoDestroyHandle ();
  699. Assert.AreEqual (1, handle_destroyed_count, "1");
  700. f1 = new MyForm ();
  701. f1.HandleDestroyed += new EventHandler (handle_destroyed);
  702. f1.Show ();
  703. f1.DoRecreateHandle ();
  704. Assert.AreEqual (2, handle_destroyed_count, "2");
  705. }
  706. [Test]
  707. public void FormClose ()
  708. {
  709. Form myform = new Form ();
  710. myform.ShowInTaskbar = false;
  711. Assert.IsFalse (myform.Visible, "A1");
  712. Assert.IsFalse (myform.IsDisposed, "A2");
  713. myform.Close ();
  714. Assert.IsFalse (myform.Visible, "A3");
  715. Assert.IsFalse (myform.IsDisposed, "A4");
  716. myform.Show ();
  717. Assert.IsTrue (myform.Visible, "A5");
  718. Assert.IsFalse (myform.IsDisposed, "A6");
  719. myform.Close ();
  720. Assert.IsFalse (myform.Visible, "A7");
  721. Assert.IsTrue (myform.IsDisposed, "A8");
  722. }
  723. [Test]
  724. public void FormClose2 ()
  725. {
  726. WMCloseWatcher f = new WMCloseWatcher ();
  727. f.ShowInTaskbar = false;
  728. f.close_count = 0;
  729. Assert.IsFalse (f.Visible, "A1");
  730. f.Close ();
  731. Assert.AreEqual (0, f.close_count, "A2");
  732. f.Show ();
  733. f.Close ();
  734. Assert.AreEqual (1, f.close_count, "A3");
  735. }
  736. class WMCloseWatcher : Form {
  737. public int close_count;
  738. protected override void WndProc (ref Message msg) {
  739. if (msg.Msg == 0x0010 /* WM_CLOSE */) {
  740. close_count ++;
  741. }
  742. base.WndProc (ref msg);
  743. }
  744. }
  745. class SwallowOnActivated : Form {
  746. protected override void OnActivated (EventArgs e)
  747. {
  748. // do nothing
  749. }
  750. protected override void OnCreateControl () {
  751. base.OnCreateControl ();
  752. }
  753. }
  754. class EnterTest : Button {
  755. protected override void OnEnter (EventArgs e)
  756. {
  757. on_enter = true;
  758. base.OnEnter (e);
  759. }
  760. public bool on_enter;
  761. }
  762. [Test]
  763. public void OnActivateEventHandlingTest1 ()
  764. {
  765. if (RunningOnUnix) {
  766. Assert.Ignore ("Relies on form.Show() synchronously generating WM_ACTIVATE");
  767. }
  768. SwallowOnActivated f = new SwallowOnActivated ();
  769. f.ShowInTaskbar = false;
  770. EnterTest c = new EnterTest ();
  771. f.Controls.Add (c);
  772. f.Show ();
  773. Assert.IsTrue (c.on_enter, "1");
  774. f.Dispose ();
  775. }
  776. #if NET_2_0
  777. [Test]
  778. public void FormClosingEvents ()
  779. {
  780. // Standard Close
  781. Form f = new Form ();
  782. string events = string.Empty;
  783. f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); });
  784. f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format ("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); });
  785. f.Show ();
  786. f.Close ();
  787. Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:False]", events, "A1");
  788. }
  789. [Test]
  790. public void FormClosingEventsCancel ()
  791. {
  792. // Shows that setting Cancel in Closing flows through to FormClosing
  793. Form f = new Form ();
  794. string events = string.Empty;
  795. f.Closing += new CancelEventHandler (delegate (Object obj, CancelEventArgs e) { events += ("Closing;"); e.Cancel = true; });
  796. f.FormClosing += new FormClosingEventHandler (delegate (Object obj, FormClosingEventArgs e) { events += string.Format("FormClosing [Reason:{0} - Cancel:{1}]", e.CloseReason, e.Cancel); e.Cancel = false; });
  797. f.Show ();
  798. f.Close ();
  799. Assert.AreEqual ("Closing;FormClosing [Reason:UserClosing - Cancel:True]", events, "A1");
  800. }
  801. [Test]
  802. public void FormClosedEvents ()
  803. {
  804. // Standard Closed
  805. Form f = new Form ();
  806. string events = string.Empty;
  807. f.Closed += new EventHandler (delegate (Object obj, EventArgs e) { events += ("Closed;"); });
  808. f.FormClosed += new FormClosedEventHandler (delegate (Object obj, FormClosedEventArgs e) { events += string.Format ("FormClosed [Reason:{0}]", e.CloseReason); });
  809. f.Show ();
  810. f.Close ();
  811. Assert.AreEqual ("Closed;FormClosed [Reason:UserClosing]", events, "A1");
  812. }
  813. [Test]
  814. public void ShowWithOwner ()
  815. {
  816. Form f = new Form ();
  817. Button b = new Button ();
  818. f.Controls.Add (b);
  819. Form f2 = new Form ();
  820. f2.Show (f);
  821. Assert.AreSame (f, f2.Owner, "A1");
  822. f2 = new Form ();
  823. f2.Show (b);
  824. Assert.AreSame (f, f2.Owner, "A2");
  825. Button b2 = new Button ();
  826. f2 = new Form ();
  827. f2.Show (b2);
  828. Assert.AreEqual (null, f2.Owner, "A3");
  829. f2 = new Form ();
  830. f2.Show (null);
  831. Assert.AreEqual (null, f2.Owner, "A4");
  832. }
  833. [Test]
  834. [ExpectedException (typeof (InvalidOperationException))]
  835. public void ShowWithOwnerIOE ()
  836. {
  837. Form f = new Form ();
  838. f.Show (f);
  839. }
  840. [Test] // Bug #79959, #80574, #80791
  841. [Category ("NotWorking")]
  842. public void BehaviorResizeOnBorderStyleChanged ()
  843. {
  844. // Marked NotWorking because the ClientSize is dependent on the WM.
  845. // The values below match XP Luna to make sure our behavior is the same.
  846. Form f = new Form ();
  847. f.ShowInTaskbar = false;
  848. f.Show ();
  849. Assert.AreEqual (true, f.IsHandleCreated, "A0");
  850. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  851. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  852. f.FormBorderStyle = FormBorderStyle.Fixed3D;
  853. Assert.AreEqual (new Size (302, 302), f.Size, "A3");
  854. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  855. f.FormBorderStyle = FormBorderStyle.FixedDialog;
  856. Assert.AreEqual (new Size (298, 298), f.Size, "A5");
  857. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
  858. f.FormBorderStyle = FormBorderStyle.FixedSingle;
  859. Assert.AreEqual (new Size (298, 298), f.Size, "A7");
  860. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
  861. f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  862. Assert.AreEqual (new Size (298, 290), f.Size, "A9");
  863. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
  864. f.FormBorderStyle = FormBorderStyle.None;
  865. Assert.AreEqual (new Size (292, 266), f.Size, "A11");
  866. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
  867. f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  868. Assert.AreEqual (new Size (300, 292), f.Size, "A13");
  869. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
  870. f.FormBorderStyle = FormBorderStyle.Sizable;
  871. Assert.AreEqual (new Size (300, 300), f.Size, "A15");
  872. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
  873. f.Close ();
  874. }
  875. [Test] // Bug #80574, #80791
  876. [Category ("NotWorking")]
  877. public void BehaviorResizeOnBorderStyleChangedNotVisible ()
  878. {
  879. // Marked NotWorking because the ClientSize is dependent on the WM.
  880. // The values below match XP Luna to make sure our behavior is the same.
  881. Form f = new Form ();
  882. f.ShowInTaskbar = false;
  883. Assert.AreEqual (false, f.IsHandleCreated, "A0");
  884. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  885. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  886. f.FormBorderStyle = FormBorderStyle.Fixed3D;
  887. Assert.AreEqual (new Size (300, 300), f.Size, "A3");
  888. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  889. f.FormBorderStyle = FormBorderStyle.FixedDialog;
  890. Assert.AreEqual (new Size (300, 300), f.Size, "A5");
  891. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A6");
  892. f.FormBorderStyle = FormBorderStyle.FixedSingle;
  893. Assert.AreEqual (new Size (300, 300), f.Size, "A7");
  894. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A8");
  895. f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
  896. Assert.AreEqual (new Size (300, 300), f.Size, "A9");
  897. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A0");
  898. f.FormBorderStyle = FormBorderStyle.None;
  899. Assert.AreEqual (new Size (300, 300), f.Size, "A11");
  900. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A12");
  901. f.FormBorderStyle = FormBorderStyle.SizableToolWindow;
  902. Assert.AreEqual (new Size (300, 300), f.Size, "A13");
  903. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A14");
  904. f.FormBorderStyle = FormBorderStyle.Sizable;
  905. Assert.AreEqual (new Size (300, 300), f.Size, "A15");
  906. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A16");
  907. }
  908. [Test] // Bug #80574, #80791
  909. [Category ("NotWorking")]
  910. public void MoreBehaviorResizeOnBorderStyleChangedNotVisible ()
  911. {
  912. // Marked NotWorking because the ClientSize is dependent on the WM.
  913. // The values below match XP Luna to make sure our behavior is the same.
  914. Form f = new Form ();
  915. f.ShowInTaskbar = false;
  916. f.Show ();
  917. f.Hide ();
  918. Assert.AreEqual (true, f.IsHandleCreated, "A0");
  919. f.FormBorderStyle = FormBorderStyle.Sizable;
  920. Assert.AreEqual (new Size (300, 300), f.Size, "A1");
  921. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A2");
  922. f.FormBorderStyle = FormBorderStyle.None;
  923. Assert.AreEqual (new Size (292, 266), f.Size, "A3");
  924. Assert.AreEqual (new Size (292, 266), f.ClientSize, "A4");
  925. }
  926. #endif
  927. private bool RunningOnUnix {
  928. get {
  929. // check for Unix platforms - see FAQ for more details
  930. // http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
  931. int platform = (int) Environment.OSVersion.Platform;
  932. return ((platform == 4) || (platform == 128));
  933. }
  934. }
  935. private class MockForm : Form
  936. {
  937. public bool CloseOnLoad {
  938. get { return _closeOnLoad; }
  939. set { _closeOnLoad = value; }
  940. }
  941. public bool VisibleOnLoad {
  942. get { return _visibleOnLoad; }
  943. }
  944. protected override void OnLoad(EventArgs e) {
  945. base.OnLoad(e);
  946. _visibleOnLoad = Visible;
  947. if (CloseOnLoad)
  948. Close ();
  949. }
  950. private bool _closeOnLoad;
  951. private bool _visibleOnLoad;
  952. }
  953. }
  954. }