Windows Forms

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Microsoft Windows Forms este numele dat părții GUI a cadrului Microsoft.NET , oferă acces la widget-urile native Windows prin încapsularea API-ului Win32 existent în modul cod gestionat .

Deși Microsoft Windows Forms este văzut ca un înlocuitor pentru sistemul mai vechi, mai complex bazat pe C ++ , Microsoft Foundation Classes , acesta nu oferă caracteristici comparabile, cum ar fi arhitectura „Vizualizare / Document” Model-Vizualizare-Controller [1] [ 2] [3] .

Implementarea există în spațiul de nume System.Windows.Forms al cadrului System.Windows.Forms și caută corect tema în sine pe Windows XP . Cu toate acestea, există controverse semnificative cu acest suport în ceea ce privește tab-urile și comenzile plasate pe aceste foi.

La 4 decembrie 2018, în cadrul conferinței Microsoft Connect (); 2018, compania a realizat Windows Presentation Foundation , Windows Forms și WinUI (Windows UI XAML Library) open source, încărcând codul sursă [4] [5] [6] pe GitHub.

Alte seturi de instrumente GUI pentru .NET includ:

Arhitectură

Acest API face parte din .NET Framework 3.0
Acest API face parte din .NET Framework 3.0

O aplicație Windows Forms este o aplicație bazată pe evenimente acceptată de Microsoft .NET Framework. Spre deosebire de un program batch, acesta își petrece cea mai mare parte a timpului pur și simplu așteptând ca utilizatorul să facă ceva, cum ar fi completarea unei casete de text sau apăsarea unui buton.

Windows Forms oferă acces la controalele comune Windows UI native prin împachetarea API-ului Windows existent în cod gestionat [7] . Cu ajutorul Windows Forms, .NET Framework oferă o abstracție mai completă asupra API-ului Win32 decât Visual Basic sau MFC [8] .

Windows Forms este similar cu biblioteca Microsoft Foundation Class (MFC) din dezvoltarea aplicațiilor client. Oferă un wrapper format dintr-un set de clase C ++ pentru dezvoltarea aplicațiilor Windows. Cu toate acestea, nu oferă un cadru de aplicații implicit, cum ar fi MFC. Fiecare control dintr-o aplicație Windows Forms este o instanță concretă a unei clase.

Caracteristici

Toate elementele vizuale din biblioteca de clase Windows Forms derivă din clasa Control. Aceasta oferă funcționalitate minimă a unui element de interfață, cum ar fi poziția, dimensiunea, culoarea, fontul, textul, precum și evenimentele obișnuite, cum ar fi clic și glisare / fixare. Clasa Control are, de asemenea, suport de andocare pentru a permite unui control să își rearanjeze poziția sub părintele său. Suportul Microsoft Active Accessibility din clasa Control permite, de asemenea, utilizatorilor cu probleme de utilizare să utilizeze mai bine Windows Forms [9] .

Pe lângă faptul că oferă acces la comenzile native Windows, cum ar fi butonul, caseta de text, caseta de selectare și vizualizarea listei, Windows Forms a adăugat propriile controale pentru găzduirea ActiveX, aranjarea aspectului, validarea și legarea datelor avansate. Aceste controale sunt afișate folosind GDI + [9] .

Istorie și viitor

La fel ca Abstract Window Toolkit (AWT), echivalentul API-ului Java, Windows Forms a fost un mod ușor și timpuriu de a furniza componente ale interfeței grafice a utilizatorului în .NET Framework. Windows Forms se bazează pe API-ul Windows existent, iar unele controale doar înfășoară componentele Windows subiacente. Unele metode permit accesul direct la apelurile de apel Win32, care nu sunt disponibile pe platformele non-Windows[10] .

În .NET Framework 2.0, Windows Forms a obținut controale de aspect mai bogate, controale de bandă de instrumente în stil Office 2003, componentă multithreading, suport în timp de proiectare și legare de date mai bogată, precum și ClickOnce pentru implementare bazată pe web [11] [12] .

Odată cu lansarea .NET 3.0, Microsoft a lansat un al doilea API paralel pentru redarea GUI: Windows Presentation Foundation (WPF) bazat pe DirectX [13] , împreună cu un limbaj GUI declarativ numit XAML [14] .

În timpul unei sesiuni de întrebări și răspunsuri la conferința Build 2014, Microsoft a explicat că Windows Forms se afla în modul de întreținere, fără a fi adăugate funcții noi, dar erorile găsite vor fi în continuare rezolvate [15] . Mai recent, a fost introdus suport îmbunătățit DPI ridicat pentru diferite controale Windows Forms [16] în actualizările versiunii 4.5 a .NET Framework.

Compatibilitate cu versiunile anterioare de XAML cu Windows Forms

Pentru dezvoltarea viitoare, Microsoft a înlocuit Windows Forms cu o intrare GUI bazată pe XAML utilizând cadre precum WPF și UWP. Cu toate acestea, poziționarea prin glisare și plasare a componentelor GUI similare cu Windows Forms este încă furnizată în XAML prin înlocuirea elementului XAML rădăcină pagină / fereastră cu un control UI "Canvas". La efectuarea acestei modificări, utilizatorul poate crea o fereastră similară cu Windows Forms prin tragerea și plasarea directă a componentelor utilizând Visual Studio GUI.

Deși XAML oferă compatibilitate înapoi a poziționării glisare și plasare prin intermediul controlului Canvas, comenzile XAML sunt similare numai cu comenzile Windows Forms și nu sunt compatibile cu versiunile anterioare. Acestea îndeplinesc funcții similare și arată similar, dar proprietățile și metodele sunt suficient de diferite pentru a necesita re-maparea de la un API la altul.

Implementare alternativă

Mono este un proiect condus de Xamarin (fost Ximian, mai târziu Novell) pentru a crea un set de instrumente compatibil .NET care să respecte standardul Ecma.

În 2011, asistența Mono pentru System.Windows.Forms începând cu .NET 2.0 a fost anunțată ca fiind completă; System.Windows.Forms 2.0 funcționează nativ pe Mac OS X [17] . Cu toate acestea, System.Windows.Forms nu a System.Windows.Forms dezvoltat activ pe Mono. Compatibilitatea completă cu .NET nu a fost posibilă, deoarece System.Windows.Forms la Microsoft este în primul rând un wrapper al API-ului Windows și unele metode permit accesul direct la apelurile de apel Win32, care nu sunt disponibile pe alte platforme decât Windows[10] . O problemă mai semnificativă este că, de la versiunea 5.2 [18] , Mono a fost actualizat astfel încât valoarea sa implicită să asume o platformă pe 64 de biți. Cu toate acestea, System.Windows.Forms on Mono pentru platforma Macintosh OS X a fost creat folosind un subsistem pe 32 de biți, Carbon [19] .

Notă

  1. ^ Ghiduri de proiectare și implementare pentru clienții web de către Microsoft Pattern și Practici , pe msdn.microsoft.com , Microsoft, noiembrie 2003.
  2. ^ Chris Sells și Michael Weinhardt, Anexa B , în Trecerea de la MFC, Programare Windows Forms 2.0 , 2, Addison-Wesley Professional, 16 mai 2006.
  3. ^ Introducere în Windows Forms , la msdn.microsoft.com , Microsoft 2003.
  4. ^ Microsoft realizează Windows Forms, WinUI și WPF open source , pe Hardware Upgrade . Adus la 5 decembrie 2018 .
  5. ^ Jeff Martin, Microsoft Open Sources WPF, WinForms și WinUI , în InfoQ , 4 decembrie 2018. Adus 6 decembrie 2018 .
  6. ^ Scott Hanselman, Announcing WPF, WinForms și WinUI merg Open Source , hanselman.com , 4 decembrie 2018. Accesat 6 decembrie 2018 .
  7. ^ Bart De Smet, Capitolul 5 , în C # 4.0 Unleashed , Sams Publishing, 4 ianuarie 2011.
  8. ^ Ian Griffiths și Matthew Adams, NET Windows Forms in a Nutshell , O'Reilly Media, martie 2003, p. 4.
  9. ^ a b Ian Griffiths și Matthew Adams, NET Windows Forms in a Nutshell , O'Reilly Media, martie 2003, pp. 27-53.
  10. ^ a b Întrebări frecvente: Winforms , la mono-project.com .
    Este foarte puțin probabil ca implementarea să implementeze vreodată tot ce este necesar pentru compatibilitatea deplină cu Windows.Forms. Motivul este că Windows.Forms nu este un set de instrumente complet și, pentru a rezolva această problemă, o parte din fundația Win32 de bază este expusă programatorului sub forma expunerii handlerului de mesaje Windows " .
  11. ^ Chris Sells și Michael Weinhardt, Anexa A. Ce este nou în Windows Forms 2.0 , în Windows Forms 2.0 Programming , 2nd, Addison-Wesley Professional, 16 mai 2006.
  12. ^ Brian Noyes,Prefață , în Legarea datelor cu Windows Forms 2.0: Programarea aplicațiilor inteligente de date client cu .NET , 1, Addison-Wesley Professional, 12 ianuarie 2006.
  13. ^ Gary Hall, DirectX, nu GDI + , în Pro WPF și Silverlight MVVM: Dezvoltare eficientă a aplicațiilor cu model , ediția 2010ª, Apress, 27 decembrie 2010, p. 2.
  14. ^ Josh Smith, WPF vs. Windows Forms , la joshsmithonwpf.wordpress.com , Josh Smith pe WPF, 5 septembrie 2007. Accesat la 25 august 2011 .
    «WPF nu este destinat să înlocuiască Windows Forms. [...] Windows Forms este încă în viață și va continua să fie îmbunătățit și susținut de Microsoft pentru anii următori. WPF este pur și simplu un alt instrument pe care dezvoltatorii de aplicații desktop Windows îl pot utiliza, atunci când este cazul. " .
  15. ^ O întrebare și răspuns WPF , la infoq.com . Adus pe 21 aprilie 2014 .
    " Windows Forms continuă să fie acceptat, dar în modul de întreținere. Vor remedia erorile pe măsură ce vor fi descoperite, dar funcționalitatea nouă este în afara tabelului " .
  16. ^ Jonathan Allen, High DPI Improvements for Windows Forms in .NET 4.5.2 , InfoQ , 6 mai 2014. Accesat la 10 februarie 2015 .
  17. ^ WinForms , la mono-project.com . Adus la 30 iulie 2011 .
    « Winforms rulează pe OSX? Da, începând cu Mono 1.9, Winforms are un driver OSX nativ pe care îl folosește implicit " .
  18. ^ Introducere în Mono pe macOS , la mono-project.com . Adus pe 12 noiembrie 2019 .
  19. ^ Jess Martin, Windows.Forms Vine pe Mac OS X pe 64 de biți , la infoq.com . Adus pe 12 noiembrie 2019 .

Elemente conexe

linkuri externe