De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Windows Forms (WinForms) es una biblioteca de clases gráfica (GUI) gratuita y de código abierto incluida como parte de Microsoft .NET Framework o Mono Framework , [1] que proporciona una plataforma para escribir aplicaciones de cliente enriquecidas para equipos de escritorio, portátiles y tabletas. . [2] Si bien se considera un reemplazo de la anterior y más compleja Microsoft Foundation Class Library basada en C ++ , no ofrece un paradigma comparable [3] y solo actúa como una plataforma para el nivel de interfaz de usuario en una solución de múltiples niveles . . [4]

En el evento de Microsoft Connect el 4 de diciembre de 2018, Microsoft anunció el lanzamiento de Windows Forms como un proyecto de código abierto en GitHub . Se publica bajo la licencia MIT . Con esta versión, Windows Forms está disponible para proyectos destinados al marco de .NET Core . Sin embargo, el marco todavía está disponible solo en la plataforma Windows, y la implementación incompleta de Windows Forms de Mono sigue siendo la única implementación multiplataforma. [5] [6]

Arquitectura [ editar ]

Esta API es parte de .NET Framework 3.0

Una aplicación de Windows Forms es una aplicación impulsada por eventos compatible con .NET Framework de Microsoft . A diferencia de un programa por lotes , pasa la mayor parte del tiempo simplemente esperando que el usuario haga algo, como completar un cuadro de texto o hacer clic en un botón .

Windows Forms proporciona acceso a los controles comunes de la interfaz de usuario de Windows nativa al incluir la API de Windows existente en un código administrado . [7] Con la ayuda de Windows Forms, .NET Framework proporciona una abstracción más completa sobre la API de Win32 que Visual Basic o MFC. [8]

Windows Forms es similar a la biblioteca Microsoft Foundation Class (MFC) en el desarrollo de aplicaciones cliente. Proporciona un contenedor que consta de un conjunto de clases de C ++ para el desarrollo de aplicaciones de Windows. Sin embargo, no proporciona un marco de aplicación predeterminado como el MFC. Cada control en una aplicación de Windows Forms es una instancia concreta de una clase.

Funciones [ editar ]

Todos los elementos visuales de la biblioteca de clases de Windows Forms se derivan de la clase Control. Esto proporciona la funcionalidad mínima de un elemento de la interfaz de usuario, como ubicación, tamaño, color, fuente, texto, así como eventos comunes como hacer clic y arrastrar / soltar. La clase Control también tiene soporte de acoplamiento para permitir que un control reorganice su posición debajo de su padre. La compatibilidad con Microsoft Active Accessibility en la clase Control también ayuda a los usuarios discapacitados a utilizar mejor Windows Forms. [9]

Además de proporcionar acceso a los controles nativos de Windows como botón, cuadro de texto, casilla de verificación y vista de lista, Windows Forms agregó sus propios controles para el alojamiento ActiveX , la disposición del diseño, la validación y el enlace de datos enriquecidos. Estos controles se representan mediante GDI +. [9]

Historia y futuro [ editar ]

Al igual que Abstract Window Toolkit (AWT), la API de Java equivalente , Windows Forms fue una forma temprana y fácil de proporcionar componentes de interfaz gráfica de usuario a .NET Framework . Windows Forms se basa en la API de Windows existente y algunos controles simplemente envuelven los componentes subyacentes de Windows. [10] Algunos de los métodos permiten el acceso directo a devoluciones de llamada de Win32 , que no están disponibles en plataformas distintas de Windows. [10]

En .NET Framework 2.0, Windows Forms obtuvo controles de diseño más ricos, controles de tira de herramientas de estilo Office 2003, componente de subprocesos múltiples, tiempo de diseño más rico y soporte de enlace de datos, así como ClickOnce para implementación basada en web. [11] [12]

Con el lanzamiento de .NET 3.0, Microsoft lanzó una segunda API paralela para renderizar GUI: Windows Presentation Foundation (WPF) basado en DirectX, [13] junto con un lenguaje declarativo de GUI llamado XAML . [14]

Durante una sesión de preguntas y respuestas en la Conferencia Build 2014 , Microsoft explicó que Windows Forms estaba en modo de mantenimiento, sin agregar nuevas funciones, pero los errores encontrados aún serían corregidos. [15] Más recientemente, se introdujo un soporte mejorado de alto DPI para varios controles de Windows Forms en las actualizaciones de .NET Framework versión 4.5. [dieciséis]

Compatibilidad con versiones anteriores de XAML con Windows Forms [ editar ]

Para el desarrollo futuro, Microsoft ha logrado Windows Forms con una entrada de GUI basada en XAML utilizando marcos como WPF y UWP . Sin embargo, la ubicación de arrastrar y soltar de los componentes GUI de una manera similar a Windows Forms todavía se proporciona en XAML al reemplazar el elemento XAML raíz de la página / ventana con un control de interfaz de usuario "Canvas". Al realizar este cambio, el usuario puede crear una ventana de forma similar a la de Windows Forms arrastrando y soltando componentes directamente mediante la GUI de Visual Studio.

Si bien XAML proporciona compatibilidad con versiones anteriores de ubicación de arrastrar y soltar a través del control Canvas, los controles XAML solo son similares a los controles de Windows Forms y no son compatibles con versiones anteriores de uno a uno. Realizan funciones similares y tienen una apariencia similar, pero las propiedades y los métodos son lo suficientemente diferentes como para requerir la reasignación de una API a otra.

Implementación alternativa [ editar ]

Mono es un proyecto dirigido por Xamarin (anteriormente por Ximian , luego Novell ) para crear un conjunto de herramientas compatible con .NET compatible con el estándar Ecma .

En 2011, el soporte de Mono para System.Windows.Forms a partir de .NET 2.0 se anunció como completo; [17] System.Windows.Forms 2.0 funciona de forma nativa en Mac OS X. [18] Sin embargo, System.Windows.Forms no se ha desarrollado activamente en Mono. [19] La compatibilidad total con .NET no fue posible, porque System.Windows Forms de Microsoft es principalmente un envoltorio alrededor de la API de Windows , y algunos de los métodos permiten el acceso directo a devoluciones de llamada de Win32 , que no están disponibles en plataformas distintas de Windows. [10] Un problema más importante es que, desde la versión 5.2, [20]Mono se ha actualizado para que su configuración predeterminada sea una plataforma de 64 bits. Sin embargo, System.Windows.Forms en Mono para la plataforma Macintosh OS X se ha creado utilizando un subsistema de 32 bits, Carbon . [21] A partir de esta fecha [ ¿cuándo? ] , una versión de 64 bits de System.Windows.Forms para Mac OS X sigue sin estar disponible y solo se puede esperar que se ejecuten las aplicaciones .NET creadas para la plataforma de 32 bits.

Ver también [ editar ]

  • Microsoft Visual Studio
  • ClickOnce
  • Abstract Window Toolkit (AWT), la interfaz de programación de aplicaciones (API) GUI equivalente para el lenguaje de programación Java
  • Biblioteca de componentes visuales (VCL) de Borland
  • Prueba visual , automatización de pruebas

Referencias [ editar ]

  1. ^ Sells, Chris (6 de septiembre de 2003). Programación de Windows Forms en C # (1ª ed.). Addison-Wesley Professional. pag. xxxviiii.
  2. ^ "Pautas de diseño e implementación para clientes web por patrón y prácticas de Microsoft" . Microsoft. Noviembre de 2003.
  3. ^ Vende, Chris; Weinhardt, Michael (16 de mayo de 2006). "Apéndice B". Pasando de MFC, Programación de Windows Forms 2.0 (2ª ed.). Addison-Wesley Professional.
  4. ^ "Introducción a Windows Forms" (documentación de Visual Studio 2003). Microsoft 2003.
  5. ^ Martin, Jeff (4 de diciembre de 2018). "Microsoft Open Sources WPF, WinForms y WinUI" . InfoQ . Consultado el 6 de diciembre de 2018 .
  6. ^ Hanselman, Scott (4 de diciembre de 2018). "Anunciando que WPF, WinForms y WinUI se convertirán en código abierto" . Consultado el 6 de diciembre de 2018 .
  7. ^ De Smet, Bart (4 de enero de 2011). "Capítulo 5". C # 4.0 desatado . Sams Publishing.
  8. ^ Griffiths, Ian; Adams, Matthew (marzo de 2003). NET Windows Forms en pocas palabras . O'Reilly Media. pag. 4.
  9. ^ a b Griffiths, Ian; Adams, Matthew (marzo de 2003). NET Windows Forms en pocas palabras . O'Reilly Media. págs. 27–53.
  10. ^ a b c "Preguntas frecuentes: Winforms" . mono-project.com. Es muy poco probable que la implementación implemente todo lo necesario para una compatibilidad total con Windows.Forms. La razón es que Windows.Forms no es un conjunto de herramientas completo, y para solucionar este problema, algunos de los fundamentos subyacentes de Win32 se exponen al programador en la forma de exponer el controlador de mensajes de Windows.
  11. ^ Vende, Chris; Weinhardt, Michael (16 de mayo de 2006). "Apéndice A. Novedades de Windows Forms 2.0". Programación de Windows Forms 2.0 (2ª ed.). Addison-Wesley Professional.
  12. ^ Noyes, Brian (12 de enero de 2006). "Prefacio". Enlace de datos con Windows Forms 2.0: Programación de aplicaciones de datos de Smart Client con .NET (1ª ed.). Addison-Wesley Professional.
  13. ^ Hall, Gary (27 de diciembre de 2010). "DirectX, no GDI +". Pro WPF y Silverlight MVVM: Desarrollo efectivo de aplicaciones con Model (2010 ed.). Presione. pag. 2.
  14. Smith, Josh (5 de septiembre de 2007). "WPF frente a Windows Forms" . Josh Smith en WPF . Consultado el 25 de agosto de 2011 . WPF no está diseñado para reemplazar Windows Forms. [...] Windows Forms sigue vivo y coleando, y Microsoft continuará mejorando y respaldando a Microsoft durante los próximos años. WPF es simplemente otra herramienta que pueden utilizar los desarrolladores de aplicaciones de escritorio de Windows, cuando sea apropiado.
  15. ^ "Preguntas y respuestas de WPF" . infoq.com. 2014-04-03 . Consultado el 21 de abril de 2014 . Windows Forms sigue siendo compatible, pero en modo de mantenimiento. Arreglarán errores a medida que se descubran, pero la nueva funcionalidad está fuera de la mesa
  16. Allen, Jonathan (6 de mayo de 2014). "Mejoras de alto DPI para Windows Forms en .NET 4.5.2" . InfoQ . Consultado el 10 de febrero de 2015 .
  17. ^ "WinForms" . mono-project.com . Consultado el 30 de julio de 2011 . El soporte para Windows Forms 2.0 está completo. En este punto, en gran parte solo estamos arreglando errores y puliendo nuestro código.
  18. ^ "WinForms" . mono-project.com . Consultado el 30 de julio de 2011 . ¿Winforms se ejecuta en OSX? Sí, a partir de Mono 1.9, Winforms tiene un controlador OSX nativo que utiliza de forma predeterminada
  19. de Icaza, Miguel (7 de marzo de 2011). "GDC 2011" . Consultado el 30 de julio de 2011 . Para las herramientas que se basan en su mayoría en OpenGL / DirectX, use Windows.Forms, teniendo en cuenta que podría ser necesario corregir algunos errores o solucionarlos, ya que Windows.Forms no se desarrolla activamente.
  20. ^ "Introducción a Mono en macOS" . mono-project.com . Consultado el 12 de noviembre de 2019 .
  21. ^ Martín, Jess. "Windows.Forms llega a Mac OS X de 64 bits" . Consultado el 12 de noviembre de 2019 .

Enlaces externos [ editar ]

  • MSDN: creación de aplicaciones de Windows Forms
  • MSDN: documentación de referencia de Windows.Forms
  • MSDN: Artículos técnicos de Windows Forms - Automatización de Windows Forms con prueba visual