Content deleted Content added
mNo edit summary |
Artoria2e5 (talk | contribs) →Alternative implementation: libgdi+ |
||
(39 intermediate revisions by 26 users not shown) | |||
Line 1:
{{distinguish|Microsoft Forms}}
{{update|date=January 2023}}
{{short description|Graphical user interface software library}}
{{Infobox software
| name
| screenshot
| logo = WinForms Logo.png
| screenshot alt
| author
| other_names
| developer
| released
| latest release
| latest release date = {{Start date and age|2023|11|14}}<ref>{{cite web|url=https://github.com/dotnet/winforms/releases/tag/v8.0.0|title=v8.0.0|date=2023-11-14|website=github.com|access-date=2023-11-21}}</ref>
| latest preview version =
| latest preview date
| programming language
| operating system
| platform
| genre
| license
| website
}}
'''Windows Forms''',
At the [[Microsoft Connect]] event on December 4, 2018, [[Microsoft]] announced releasing Windows Forms as an open source project
== Architecture ==
[[File:DotNet3.0.svg|thumb|right|300px|This [[application programming interface|API]] is a part of [[.NET Framework]] 3.0]]
A ''Windows Forms application'' is an [[event-driven programming|event-driven application]] supported by Microsoft's [[.NET Framework]]. Unlike a [[batch processing|batch program]], it spends most of its time simply waiting for the user to do something, such as fill in a [[text box]] or click a [[
Windows Forms provides access to native [[Windows USER|Windows User Interface]] Common Controls by wrapping the existent [[Windows API]] in [[managed code]].<ref>{{cite book|url=http://www.informit.com/articles/article.aspx?p=2048355&seqNum=4|title=C# 4.0 Unleashed|last=De Smet|first=Bart|publisher=Sams Publishing|date=January 4, 2011|chapter=Chapter 5}}</ref> With the help of Windows Forms, the .NET Framework provides a more comprehensive abstraction above the Win32 API than Visual Basic or MFC did.<ref>{{cite book|title=NET Windows Forms in a Nutshell|last1=Griffiths|first1=Ian|last2=Adams|first2=Matthew|publisher=O'Reilly Media|date=March 2003|page=4}}</ref>
Line 33 ⟶ 36:
== Features ==
All visual elements in the Windows Forms class library derive from the Control class. This provides the minimal functionality of a user interface element such as ___location, size, color, font, text, as well as common events like click and drag/drop. The Control class also has docking support to let a control rearrange its position under its parent. The [[Microsoft Active Accessibility]] support in the Control class also helps impaired users to use Windows Forms better.<ref name="Griffiths2003">{{cite book|title=NET Windows Forms in a Nutshell|last1=Griffiths|first1=Ian|last2=Adams|first2=Matthew|publisher=O'Reilly Media|date=March 2003|pages=27–53}}</ref>
In Visual Studio, forms are created using [[drag-and-drop]] techniques. A tool is used to place controls (e.g., text boxes, buttons, etc.) on the form (window). Controls have [[Attribute (computing)|attributes]] and [[Event handler|event handlers]] associated with them. Default values are provided when the control is created, but may be changed by the programmer. Many attribute values can be modified during run time based on user actions or changes in the environment, providing a dynamic application. For example, code can be inserted into the form resize event handler to reposition a control so that it remains centered on the form, expands to fill up the form, etc. By inserting code into the event handler for a keypress in a text box, the program can automatically translate the case of the text being entered, or even prevent certain characters from being inserted.
Besides providing access to native Windows controls like button, textbox, checkbox and listview, Windows Forms added its own controls for [[ActiveX]] hosting, layout arrangement, validation and rich data binding. Those controls are rendered using [[Graphics Device Interface|GDI]]+.<ref name="Griffiths2003"/>
Line 43 ⟶ 48:
| quote= ''It is very unlikely that the implementation will ever implement everything needed for full compatibility with Windows.Forms. The reason is that Windows.Forms is not a complete toolkit, and to work around this problem some of the underlying Win32 foundation is exposed to the programmer in the form of exposing the Windows message handler''}}</ref> Some of the methods allow direct access to Win32 [[Callback (computer programming)|callbacks]], which are not available in non-Windows platforms.<ref name="monofaq-winform"/>
In .NET Framework 2.0, Windows Forms gained richer layout controls, Office 2003 style toolstrip controls, multithreading component, richer design-time and data binding support as well as [[ClickOnce]] for web-based deployment.<ref>{{cite book|chapter=Appendix A. What s New in Windows Forms 2.0|title=Windows Forms 2.0 Programming|last1=Sells|first1=Chris|last2=Weinhardt|first2=Michael|publisher=Addison-Wesley Professional|edition=2nd|date=May 16, 2006}}</ref><ref>{{cite book|title=Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET|url=https://archive.org/details/databindingwithw0000noye|url-access=registration|last=Noyes|first=Brian|publisher=Addison-Wesley Professional|edition=1st|date=January 12, 2006|chapter=Preface|isbn=978-81-317-4823-7 }}</ref>
With the release of .NET Framework 3.0, Microsoft released a second, parallel API for rendering GUIs: [[Windows Presentation Foundation]] (WPF) based on DirectX,<ref>{{cite book|section=DirectX, not GDI+|title=Pro WPF and Silverlight MVVM: Effective Application Development with Model|last=Hall|first=Gary|publisher=Apress|edition=2010|date=December 27, 2010|page=2}}</ref> together with a GUI declarative language called [[Extensible Application Markup Language|XAML]].<ref>{{cite web
| access-date = 2011-08-25
| last = Smith
Line 80 ⟶ 85:
==XAML backwards compatibility with Windows Forms==
For future development, Microsoft has succeeded Windows Forms with
While XAML provides drag and drop placement backwards compatibility through the Canvas Control, XAML Controls are only similar to Windows Forms Controls and are not one-to-one backwards compatible. They perform similar functions and have a similar appearance, but the properties and methods are different enough to require remapping from one API to another.
== Alternative implementation ==
[[Mono (software)|Mono]] is a project led by [[Xamarin]] (formerly by [[Ximian]], then [[Novell]]) to create an [[Ecma International|Ecma]] standard compliant [[.NET Framework
| url=http://www.mono-project.com/WinForms
| title= WinForms
Line 108 ⟶ 111:
|access-date=2011-07-30
|quote=''For tools that are mostly OpenGL/DirectX based, use Windows.Forms, keeping in mind that some bug fixing or work around on their part might be needed as our Windows.Forms is not actively developed.''}}</ref>
Full compatibility with .NET was not possible, because Microsoft's System.Windows Forms is mainly a wrapper around the [[Windows API]], and some of the methods allow direct access to Win32 [[Callback (computer programming)|callbacks]], which are not available in platforms other than Windows.<ref name="monofaq-winform"/> Mono's WinForms implementation is based on Mono's libgdiplus, which implements [[GDI+]] on top of [[Gtk]] and [[Pango]].<ref>{{cite web |title=Mono / libgdiplus · GitLab |url=https://gitlab.winehq.org/mono/libgdiplus |website=GitLab |language=en}}</ref>
A more significant problem is that, since version 5.2,<ref>{{cite web
|url=https://www.mono-project.com/docs/about-mono/supported-platforms/macos/
Line 137 ⟶ 141:
== External links ==
{{Wikibooks|.NET Development Foundation}}
<!--===========================({{NoMoreLinks}})===============================
| PLEASE BE CAUTIOUS IN ADDING MORE LINKS TO THIS ARTICLE. WIKIPEDIA IS |
Line 158 ⟶ 163:
{{Widget toolkits}}
[[Category:.NET terminology]]
[[Category:2002 software]]
[[Category:Formerly proprietary software]]
[[Category:Free and open-source software]]
Line 166 ⟶ 172:
[[Category:Software using the MIT license]]
[[Category:Widget toolkits]]
[[Category:
|