Programarea GUI în C# pentru începători: De unde să începi? [închis] (Programare, C#, Wpf, Winforms, Interfață Utilizator)

user63898 a intrebat.

Sunt un dezvoltator C++ / Java și nu am nici o idee despre .Net sau GUI. Trebuie să dezvolt o aplicație windows pentru 2000/XP/Vista/7.

Cred că am ajuns la concluzia că C# este cel mai bun și cel mai rapid mod de a începe (vă rog să mă corectați dacă greșesc). Ce îmi recomandați? Ce abordare GUI ar trebui să învăț? (Formulare? Orice alte chestii?)

Este cea mai bună cale de a compila în modul .Net 2.0? Va fi o aplicație care se va descărca de către public.

9 răspunsuri
Nathan Taylor

Din experiența mea personală de dezvoltare, Windows Forms este cât se poate de simplu când vine vorba de implementarea rapidă a unei aplicații GUI pe Windows. WPF este, bineînțeles, o altă opțiune, dar utilizarea acesteia ar necesita probabil să petreceți ceva timp pentru a vă familiariza cu XAML. Windows Forms arată și se simt ca multe dintre opțiunile GUI disponibile pentru Java, doar că, în opinia mea, este mult mai bună decât majoritatea acestora.

Dacă doriți cel mai rapid timp de dezvoltare GUI posibil în .NET, Windows Forms este soluția.

Comentarii

  • Nu sunt de acord. WPF este mai rapid, mai ales dacă veniți din domeniul web. Povestea de proiectare WPF este mult mai frumoasă și are un acces la cod cel puțin la fel de bun ca WinForms. –  > Por codekaizen.
  • Nu sunt de acord cu codekaizen. Dacă vorbim de viteză, WinForms este mult mai rapid pentru cineva care nu a cunoscut niciuna dintre ele. În plus, designerii vizuali chiar funcționează și nu necesită un program separat (care ar fi Blend) pentru a fi folosit. –  > Por Dmitri Nesteruk.
  • Amintiți-vă totuși că OP este deja un dezvoltator Java experimentat – nu ar fi mai ușor pentru el să învețe doar un cadru Java GUI decât un în întregime platformă & set de instrumente complet noi? –  > Por Duncan Bayne.
  • @Dmitri – Aveți experiență cu cineva nou care învață WPF vs. Winforms? Eu am. WPF este ușor pentru ei. Este doar greu pentru tine, deoarece ai experiență cu abordarea tradițională a WinForms. De asemenea, nu ai nevoie de un program separat. Ce vă dă această idee? VS Express funcționează foarte bine. –  > Por codekaizen.
  • Punctul meu de vedere a fost făcut în lumina cuiva care vine de la Java la .NET pentru dezvoltarea GUI. WPF este o platformă foarte puternică (și destul de ușoară), dar curba de învățare este probabil să fie mai abruptă pentru cineva care nu a mai folosit așa ceva până acum. Instrumentele Java GUI decente sunt toate destul de asemănătoare cu cele ale designerului Windows Forms, dar nu știu niciuna care să fie ca WPF. –  > Por Nathan Taylor.
stiank81

Pentru aplicațiile desktop există în principiu două opțiuni; WinForms și Windows Presentation Foundation (WPF).

WinForms este construit în mod tradițional și, prin urmare, este mai ușor de învățat. Prin urmare, WinForms ar putea fi un început mai simplu, dar dacă intenționați să vă folosiți cunoștințele dobândite în dezvoltarea de interfețe grafice pentru .NET, aș spune că ar fi mai bine să vă aruncați de la început în WPF. Este un cadru mult mai bogat și în care Microsoft depune eforturi pentru aplicațiile desktop. Este, de asemenea, similar cu Silverlight, ceea ce înseamnă că puteți intra cu ușurință și în Silverlight atunci când cunoașteți WPF.

  • Această altă întrebare oferă câteva resurse utile atunci când începeți cu WPF.
  • Consultați și acest tutorial de la MSDN.
  • WpfTutorial are, evident, câteva sfaturi frumoase și pentru dumneavoastră!

Mult noroc!

Comentarii

  • Ar putea cel care mi-a dat -1 să facă un comentariu cu privire la ce nu sunt de acord astfel încât să putem învăța cu toții din asta? –  > Por stiank81.
  • @bambuska – „WinForms este construit mai tradițional și, prin urmare, mai ușor de învățat” Nu este, în general. Este doar dacă vii dintr-un mediu GUI condus de evenimente. –  > Por codekaizen.
  • Vă mulțumim pentru comentarii. Aveți dreptate în această privință, dar, în comparație cu WPF, cred că acest lucru este încă valabil. Multe alte opțiuni GUI sunt conduse de evenimente și, prin urmare, comparabile cu WinForms (Java Swing, Delphi, Qt, ..), în timp ce WPF este diferit de majoritatea celorlalte opțiuni. –  > Por stiank81.
nu.human.being

Da. C# este limbajul preferat atunci când vine vorba de dezvoltarea .NET. Din moment ce ați programat în Java, veți găsi că limbajul vă este foarte familiar (arată totuși un pic mai curat și are câteva caracteristici foarte bune, cum ar fi delegații și puteți chiar să folosiți pointeri dacă doriți cu adevărat, deși nu veți avea nevoie în majoritatea circumstanțelor).

Este SWF (System Windows Forms) sau MWF (Managed Windows Forms – o versiune ușoară a SWF scrisă în cod gestionat folosind System.Drawing – vă eliberează de WinAPI care stă la baza SWF-ului clasic) până la capăt.

Există, de asemenea, GTK-Sharp, o legătură GTK+ pentru C-Sharp, dar, din moment ce dezvoltați pentru Windows, utilizatorilor li se va părea ciudat să instaleze un cadru GUI de la o terță parte pentru aplicația dumneavoastră.

Totuși, nu v-aș recomanda să folosiți WPF. Acesta face apeluri directe la hardware-ul grafic subiacent, ceea ce înseamnă că este destul de rapid, dar nu este deloc portabil. Va rula numai pe sisteme x86 (nu SPARC, etc.) cu unități de redare hardware (plăci grafice) compatibile cu DirectX și nu va rula pe un sistem cu o abstractizare hardware puternică (cum ar fi majoritatea unităților precum BSD sau Linux sau Solaris).

De asemenea, Novell a declarat că nu va implementa niciodată WPF în viitorul apropiat din cauza dependențelor sale puternice de hardware (Novell dorește ca Mono să fie portabil pe mai multe platforme de procesoare). Nu folosiți WPF. Software-ul nu mai este doar un produs de aruncat, iar în ceea ce privește sistemele de operare, suntem în epoca rotirii. Platforma pe care o folosești astăzi nu este neapărat cea pe care o vei folosi mâine. WPF este o tehnologie brevetată și brevetată, dezvoltată de Microsoft și Intel. Dacă o folosiți, vă veți afla într-o foarte frumoasă blocare a furnizorului Win32-on-x86. Iar acest lucru înseamnă că, mai devreme sau mai târziu, vă veți trezi cu siguranță că vă veți rescrie complet aplicația. Scrieți software portabil de la început, chiar dacă nu aveți nevoie de această portabilitate astăzi. Vă spun din experiență, veți avea nevoie de portabilitate mâine. Cu siguranță!

Comentarii

  • SWF și MWF nu sunt termeni valabili atunci când vorbim despre dezvoltarea Windows Forms pe Windows. System.Windows.Forms = WinForms = Managed windows forms. Vorbești despre WinForms pe Linux folosind Mono? Dacă da, ar trebui să clarificați în răspunsul dvs. pentru ca OP să nu fie confuz. –  > Por Ash.
Adam Crossland

Ați putea folosi Windows Forms sau Windows Presentation Foundation pentru a dezvolta GUI-ul; deși, Windows Forms s-ar putea să vă pară mai familiar. Dacă efectuați o căutare pe Google pentru Tutorial Windows Forms, veți obține multe opțiuni pentru a începe.

Dacă trebuie să folosiți .NET 2.0, veți fi limitat la Win Forms. WPF necesită .NET 3.5.

V-aș sugera să descărcați gratuit Microsoft Visual Studio Express Edition pentru a o utiliza pentru dezvoltare. Acesta include un instrument excelent de proiectare GUI de tip drag-and-drop.

Comentarii

  • Din punct de vedere tehnic, WPF necesită doar .Net 3.0. –  > Por codekaizen.
  • Nu ar trebui ca ediția expres 2008 să ofere acces la 2.0, 3.0 și 3.5? –  > Por Chris.
  • Da, Chris, dar s-ar putea să fie nevoie să dezvolte programul pentru clienții care nu au o versiune recentă de .net –  > Por Daniel Sorichetti.
SwDevMan81

V-aș recomanda să învățați mai întâi Winforms, apoi să treceți la WPF. Winforms este mai ușor de învățat și de obținut ceva care să funcționeze rapid. Viitorul este însă WPF, așa că nu l-aș lăsa în întuneric. Am postat câteva cărți și link-uri bune pentru munca de dezvoltare GUI.

Cărți

  • Design of Everyday Things O carte foarte bună despre proiectarea interfețelor. Nu este specifică software-ului, dar este o lectură obligatorie pentru designerii GUI.
  • Coding Horror. Recomandă o mulțime de cărți de dezvoltare pe site-ul său lista de cărți, dar acestea sunt în special legate de interfețe:

Don’t Make Me Think
Despre fața 3.0
The Inmates Are Running the Asylum
GUI Bloopers

Legături web

codekaizen

Nu sunt de acord cu toți susținătorii WinForms. Nu este mai ușor. Poate fi mai ușor pentru cineva care are experiență tradițională în programarea GUI, dar acest poster nu are această.

WPF are o poveste de design mai bună, iar legătura de date este mult, mult mai bună decât WinForms. Poți să începi să lucrezi cu WPF cel puțin la fel de repede ca și cu WinForms și apoi să mergi mult mai departe fără să te confrunți cu limitările pe care le are WinForms. Împreună cu databinding-ul în timpul proiectării din VS 2010, aș spune că oricine începe să dezvolte GUI ar trebui să ocolească complet WinForms.

Comentarii

  • De asemenea, aș sugera cu tărie să înceapă direct cu WPF. Eu întrețin o aplicație Winforms complexă și mi-aș fi dorit să fi avut WPF la început. –  > Por softveda.
Amirshk

C# WinForms va fi cel mai rapid în ceea ce privește obținerea rapidă a unei interfețe grafice practice. Deși, dacă vă gândiți să realizați o interfață grafică complexă, cu animații, 3D etc., WPF ar fi mai bun.

Puteți utiliza CodePlex pentru a găsi câteva proiecte bune de lucru din care să învățați din punct de vedere al celor mai bune practici, atât pentru WinForms, cât și pentru WPF.

De asemenea, puteți căuta aici pentru câteva cărți bune atât despre WPF, cât și despre WinForms.

pm100

C# cu siguranță. Folosiți Winforms pentru aplicații de linie de afaceri / GUI clasice.

Citiți Petzold „Programming Windows with C#” (Programarea ferestrelor cu C#).

Sau pur și simplu scufundați-vă cu Visual Studio. Crearea GUI cu VS este foarte ușoară – vă va plăcea.

Tranziția de limbaj de la java la c# va fi destul de simplă (nu și partea de interfață grafică).

Duncan Bayne

Cred că am ajuns la concluzia că C# este cel mai bun și cel mai rapid mod de a merge (vă rog să mă corectați dacă greșesc). Ce îmi recomandați?

Personal, aș rămâne cu Java. Noi (adică OffByZero, compania pe care am co-fondat-o) am lansat un editor de text criptat numit OBZVault, care este scris în Java.

L-am scris inițial în Linux, iar apoi l-am portat pe Mac OS X și Windows. Am constatat că portarea pentru Windows a oferit un aspect & feel perfect acceptabil – aproape (dar nu exact) ca o aplicație nativă pentru Windows.

Am folosit InnoSetup pentru a crea un program de instalare nativ pentru Windows și am constatat că și acesta este destul de bun.

În concluzie: dacă nu doriți să învățați un nou limbaj & platformă sau dacă nu aveți o nevoie specifică de funcționalitate oferită de o platformă diferită, cum ar fi .NET, rămâneți la Java și pentru dezvoltarea Windows. Va trebui să învățați un cadru Java GUI, dar apoi va trebui să învățați WPF sau WinForms dacă treceți la .NET oricum.

Este posibil să fie mai rapid pentru un dezvoltator .NET cu experiență să construiască o aplicație Windows în WinForms sau WPF, dar dacă sunteți deja bine versat în Java, eu zic să rămâneți cu instrumentele (limbaj, biblioteci, IDE) pe care le cunoașteți.

Comentarii

  • Acest lucru nu răspunde la întrebare și arată prea mult ca o reclamă a companiei dvs. –  > Por yu_sha.
  • Concluzia: Nu ai înțeles întrebarea lui și vrei să-i vinzi aplicația ta? –  > Por Jan.
  • „Cred că am ajuns la concluzia că C# este cel mai bun și cel mai rapid mod de a merge (vă rog să mă corectați dacă greșesc)” Ei bine, personal cred că se înșeală; dacă este deja un dezvoltator Java experimentat și nu are nevoie de funcționalități specifice .NET, nu are rost să învețe un nou mediu de dezvoltare doar pentru a scrie o aplicație Windows. Cred că ar fi mai rapid pentru el să învețe cum să scrie aplicații GUI în Java, decât să învețe cum să scrie aplicații GUI în C#. Pe baza propriei mele experiențe comerciale, aplicația Windows rezultată ar fi probabil suficient de apropiată de un aspect & feel nativ pentru a fi suficientă. –  > Por Duncan Bayne.
  • Da, așa este. OP este un dezvoltator Java cu experiență. De ce să învețe o platformă complet nouă &; set de instrumente, dacă tot ce vrei să faci este să produci o singură aplicație GUI? Adică, dacă o faci ca un exercițiu de învățare, dă-i drumul, dar nu are sens din orice altă perspectivă. –  > Por Duncan Bayne.
  • O întrebare pentru cei care au respins răspunsul meu – a fost pentru că am sugerat că OP a greșit alegând C# în locul Java sau pentru că am făcut un link către propria mea aplicație Java comercială? –  > Por Duncan Bayne.