Programming Microsoft Windows Forms
Deze keer een recensie van het boek Programming Microsoft Windows Forms – A streamlined approach using C#, geschreven door Charles Petzold.
De schrijver
Wat zal ik eens zeggen over Charles Petzold? Eigenlijk hoef ik niet veel over hem te zeggen, want ik vermoed dat de meeste lezers al bekend zullen zijn met zijn werk. Hij is per slot van rekening een auteur met een grote lijst van titels achter zijn naam. In een wereld waar de meeste boeken over software ontwikkeling door ontwikkelaars/trainers geschreven worden me schrijven als nevenactiviteit, is Charles één van de weinige professionele schrijvers. En dat is te merken: er zijn maar weinig auteurs in staat om een behoorlijk complex onderwerp als Windows Forms ontwikkeling zo duidelijk uit te kunnen leggen. Daar waar andere auteurs wel eens iets te veel van de hak op de tak springen en in één voorbeeld te veel tegelijk willen behandelen, is de heldere schrijfstijl en gedegen opbouw van Charles een hele verademing.
Het boek
In het boek Programming Microsoft Windows Forms behandelt Charles Petzold het hoe, wat en waarom van het ontwikkelen van de grafische user interface voor een Windows applicatie. Hij gaat hier redelijk breed op in en schuwt complexe onderwerpen, als het zelf ontwikkelen van custom controls of databinding, niet. Het boek is wel als een leerboek opgezet en gaat ervan uit dat de lezer het min of meer in volgorde leest. Deze opzet maakt het boek in eerste instantie iets minder geschikt als naslagwerk, omdat Charles bij het behandelen van een onderwerp ervan uitgaat dat het eerder behandelde bekend is. Sla je het boek willekeurig ergens open, dan bestaat de kans dat de lezer een deel van de bekend veronderstelde materie niet beheerst. Heeft men het boek eenmaal van begin tot eind doorgelezen dan is het daarna wel redelijk goed als naslagwerk te gebruiken; het is zeker geen boek dat in de kast verdwijnt en zijn nut verliest.
Het boek is ook niet echt dik, in totaal 367 bladzijden, verdeeld over 7 hoofdstukken. Even ter vergelijking: een vergelijkbaar boek, Windows Forms Programming van Chris Sells en Justin Gethland, bevat 651 bladzijden, verdeeld over maar liefst 15 hoofdstukken en 4 appendices. Dit verschil doet vermoeden dat Charles in zijn boek een aantal onderwerpen niet of in mindere mate behandeld en dat klopt dan ook. Enkele van de onderwerpen die niet of minder aan bod komen zijn:
- Printen
- Drawing/graphics
- Visual Studio integratie van custom controls
- Resources
- Applicatie settings
- Typed datasets
Door een aantal onderwerpen weg te laten is Charles er in geslaagd een zeer leesbaar boek te produceren, iets waar de lezer voordeel van heeft. Het nadeel is wel dat er voor een aantal onderdelen naar andere informatiebronnen uitgeweken moet worden. Bij sommige van deze onderwerpen heeft Charles verwijzingen naar andere boeken opgenomen, helaas is dat niet bij alle punten gedaan.
De doelgroep
Dit boek is bestemd voor ontwikkelaars met een eerdere ontwikkelervaring in C#. Er wordt weinig tijd besteed aan het uitleggen van de basisprincipes van het ontwikkelen of de C# syntax zelf. Dit laatste betekent overigens niet dat dit boek onbruikbaar is voor Visual Basic ontwikkelaars. De syntaxverschillen zijn niet groot en wordt er wordt nergens gebruik gemaakt van C# eigenschappen die in Visual Basic niet beschikbaar zijn. Een uitzondering daarop is het gebruikt van Anonymous Methods, iets dat in hoofdstuk drie op een paar plaatsen gebruikt wordt.
De hoofdstukken
Hoofdstuk 1 – Creating Applications
Het eerste hoofdstuk geeft een uitleg over de verschillende basisprincipes en de basisblokken van een Windows applicatie. Er wordt ingegaan op wat device independent ontwikkelen is, iets wat in veel andere boeken pas later behandeld wordt. Ik denk dat het goed is om dit al heel vroeg in het boek onder de aandacht te brengen, aangezien het één van de basisprincipes is die men moet begrijpen bij het maken van forms en controls.
Hoofdstuk 2 – The Control Cornucopia
In dit hoofdstuk wordt een overzicht van de standaard beschikbare controls gegeven. Hierbij komen alle veel gebruikte controls even aan bod met een kort voorbeeld zodat de lezer weet welke controls er zijn en wat hun doel is. Erg diep gaat Charles niet in op de meeste controls, iets wat niet hinderlijk is maar juist de vaart in het boek houdt. Een deel van de complexere controls wordt overigens in latere hoofdstukken uitgebreider behandeld.
Hoofdstuk 3 – Panels and Dynamic Layout
In het hoofdstuk over panels en layout worden de container controls behandeld. Charles behandelt hierbij zowel de 1.* framework methode van werken als de nieuwere 2.0 functies. Hierbij worden de twee niet door elkaar verweven, zodat er een duidelijk verhaal ontstaat met de voor- en nadelen van beide manieren van werken.
Een belangrijk deel van dit hoofdstuk is gewijd aan de nieuwe layout controls die in versie 2 van het .NET framework toegevoegd zijn. Dit is één van de beste beschrijvingen die ik gelezen heb met alle combinaties die er mogelijk zijn, en dat zijn er nogal wat. Alleen deze uitleg al maakt het boek zijn geld waard, maar je krijgt nog veel meer waar voor je geld.
Hoofdstuk 4 – Custom Controls
Het hoofdstuk over custom controls gaat in op de verschillende manieren waarop eigen controls gemaakt kunnen worden. Dit is een zeer groot en complex onderwerp maar Charles doet goed werk om de basis duidelijk te maken. Noodgedwongen blijft dit bij de basis want het onderwerp is groot genoeg voor een compleet boek. De uitleg is helder maar een belangrijk stuk komt jammer genoeg helemaal niet aan bod en dat is de integratie van custom controls met Visual Studio en het property sheet zelf. Op zich wel begrijpelijk gezien de grootte en complexiteit van het onderwerp. Maar het is toch jammer dat er met geen woord over gerept wordt en er dus ook geen verwijzing naar meer informatie opgenomen is.
Hoofdstuk 5 – Cruising the Strip
In hoofdstuk 5 wordt weer een aantal nieuwe 2.0 controls behandeld. In dit geval zijn dat de MenuStrip, ToolStrip en StatusStrip controls. Deze nieuwe controls geven meer flexibiliteit dan hun voorgangers uit het 1.* framework en Charles geeft een goede uitleg over het gebruik hiervan. Naast het behandelen van de controls zelf bevat het hoofdstuk een aantal nuttige tips over hoe het één en ander in een project te organiseren, ondermeer door gebruik te maken van partial classes.
Hoofdstuk 6 – Data Binding and Data Views
Data binding is weer één van die onderwerpen waar je een heel boek over vol kan schrijven. Iets wat Brian Noyes net gedaan heeft en die had 736 pagina’s nodig voor dit onderwerp alleen al. Het zal dus duidelijk zijn dat dit hoofdstuk nooit compleet kan zijn. Wel jammer is dat de tekst in het hoofdstuk meer over het 1.* framework gaat dan over de nieuwe mogelijkheden van het 2.0 framework. Zo wordt het Changed eventsysteem van wijzigingen publiceren wel genoemd maar ontbreekt elke referentie naar de nieuwere INotifyPropertyChanged interface.
Hoofdstuk 7 – Two Real Applications
Tot slot wordt in dit hoofdstuk al het voorgaande gecombineerd tot twee echte applicaties. De twee applicaties mogen dan wel echt zijn, het blijven heel simpele utilities. De eerste is een ControlExplorer, op zich zeer handig om te hebben tijdens het ontwikkelen. De tweede is een MDI browser die meer puur demo waarde heeft dan een echt nut.
Conclusie
Alles bij elkaar kan ik dit een zeer geslaagd boek noemen. Het is helder geschreven, met een goede opbouw en duidelijke voorbeelden. Wel is het zo dat het boek, noodgedwongen door de grootte van het materiaal, niet helemaal compleet is. Het zal dus nooit het enige Windows Forms boek zijn. In dit geval is weglaten van de informatie alleen maar positief voor het boek te noemen. Een aanrader voor iedereen die zich in Windows Forms wil verdiepen!