1. Inleiding
Deze tutorial is er eentje op aanvraag. Het is een andere versie van een tutorial (gemaakt door sliphead) die
hier al op sitemasters staat, het enige verschil is dat deze op mijn manier is gemaakt
en ik gebruik C# in plaats van VB.NET! :) Als je toch de VB.NET-versie wil volgen is die
hier
te vinden! Het idee is dus om op een eenvoudige manier onze eigen webbrowser te maken. De belangrijkste
Control voor de browser is dan ook de WebBrowser-Control. Genoeg inleiding, aan de slag nu.
2. Form - design
Maak een nieuwe WindowsApplication en noem het project 'CustomBrowser' of iets dergelijks. Eerst even nog de
Name - property van onze Form wijzigen in 'frmMain'. Hierna moeten we nog een aantal Controls toevoegen aan de
Form om er een Browser van te maken.
Sleep de volgende Controls op je Form, tussen de haakjes staat de gebruikte Name - property.
MenuStrip (mainMenu)
ToolStrip (buttonMenu)
WebBrowser (browseWindow)
StatusStrip (statusBar)
Zorg dat de MenuStrip en de ToolStrip helemaal bovenaan staan en de StatusStrip helemaal onderaan.
Je WebBrowser maak je zo groot als de resterende ruimte binnen de Form.
De enige eigenschap die je van de WebBrowser 'moet' wijzigen is de Url-eigenschap, dit is
de URL naar waar de Browser standaard zal gaan.
In de MenuStrip maak je één item en dit noem je 'Bestand'. In dit menu maak je drie items:
Open URL
Open bestand
Afsluiten
De ToolStrip zal een aantal knoppen bevatten en een TextBox die dient als adresbalk. Als je op
de TooStrip klikt zie je dat je een aantal Controls hierop kan toevoegen. Voeg vijf knoppen, een
TextBox en nog een knop toe. Dit zijn de namen van de Controls:
btnVorige
btnVolgende
btnZoek
btnHome
btnRefresh
txtUrl
btnGo
Geef aan de knoppen ook de juiste Text - properties mee natuurlijk. Als laatste in de StatusStrip voeg je een StatusLabel (lblStatus) en een ProgresBar (statusProgress) toe.
Dit alles is wel wat werk, maar het is altijd handig om iets of wat duidelijke namen aan je Controls te geven
zodat deze handiger te gebruiken zijn in je code.
Je kan in plaats van Normal, ook kiezen voor 'Completely'. Dit is hetzelfde als een hard - refresh (CTRL + F5).
Nu is het enkel nog voor btnGo de code instellen, dit event zorgt ervoor dat de ingevoerde URL wordt geladen:
Dit is een eigen functie om naar een URL te gaan. Waarom een eigen functie? Omdat er meerdere events zijn waar
dit zal aangeroepen worden. Hier is de code van de functie NavigateToUrl:
Zorg dat je een private string 'strUrl' declareert helemaal bovenaan je codefile. Deze wordt gebruikt in deze functie.
Je ziet ook de aanroep van een functie IsValidUrl(), deze zit niet in het .NET Framework maar heb ik zelf geschreven.
Hieronder is de code van de functie, deze plaats je gewoon onder het event van de 'btnGo'-knop.
Deze functie kijkt na of de invoer niet leeg is. Zo niet, wordt er gekeken met een reguliere expressie of de ingevoerde
tekst wel een geldige URL is.
4. Code (menu)
Klik in Design - mode één keer op 'Bestand' op je Form en dan twee keer op het eerste item (Open Url). Er zal automatisch een event worden
aangemaakt, hierin zet je de volgende code:
Hiermee zetten we de Focus op onze adresbalk. Je zou zelf nog een kleine uitbreiding kunnen maken door met een kadertje te werken dat opent waarin
je dan een URL kan ingeven en dat die geladen wordt. Hier doen we dat niet. Nu gaan we zorgen dat we een lokaal bestand ook kunnen openen.
Sleep vanuit de ToolBox een OpenFileDialog - Control naar je Form en geef deze als Name 'openHtmlFile'. Zorg ervoor dat je zoals hiervoor een event
krijgt voor de knop met 'Open bestand' hierin zet je de volgende code:
Voor het item 'Afsluiten' is maar een klein regeltje nodig:
5. Vorige/volgende
De knoppen 'Vorige' en 'Volgende' mogen alleen klikbaar zijn wanneer er daadwerkelijk naar een vorige of volgende pagina kan gegaan worden.
Dit moet dus nagekeken worden, hiervoor hebben we twee Events: CanGoBackChanged en CanGoForwardChanged. Je kan deze blijkbaar niet instellen
in Design - mode van je Form dus doen we het even via code, voeg de volgende twee regels toe aan je Form_Load event:
Onder het Form_Load event plaats je dan de volgende code:
Als er verder of teruggegaan kan worden zetten we afhankelijk daarvan de juiste knop op Enabled (true/false).
De functie die sliphead hiervoor geschreven had via een if - statement is evengoed correct, maar dit is toch iets korter.
6. Titel / StatusBar / URL-veld
Om ervoor te zorgen dat de Title - eigenschap van onze CustomBrowser mee verandert met de pagina hebben we hiervoor
ook een event voorzien, hetzelfde geldt voor de statusbar onderaan de browser. Voeg volgende twee regels code toe aan
je Form_Load event, onder de twee vorige:
Onder je Form_Load event plaats je dan volgende code:
Deze code spreekt voor zich, de status wordt opgehaald en in het Label weergegeven. Bij het andere wordt de titel van het
geladen document opgehaald en in de Text - eigenschap van de Form gezet.
Als laatste van dit stuk, is ervoor zorgen dat het URL - veld up to date blijft. Ga in Design - mode naar de Event - properties
van je WebBrowser Control. Bij 'Navigated' typ je in het vak 'navigatedReady', het event wordt nu aangemaakt, zorg dat het er zo
uitziet:
7. ProgressBar updaten
Een klein extraatje is om een ProgressBar te hebben die meegaat naargelang het laden van de pagina. Ga terug naar je
Design - mode naar de Events en daar typ je bij ProgressChanged dit: 'updateProgress', duw op enter en het event wordt
aangemaakt en hierin plaats je volgende code:
Via een kleine formule wordt er berekend hoeveel er al van het totaal aantal kilobytes geladen is en dit wordt dan
de waarde in de ProgressBar, waardoor deze mooi meevolgt. Daarna plaats je nog deze code onder het event:
Dit zorgt ervoor dat de ProgressBar terug leeg wordt gemaakt als de pagina volledig geladen is. Als je alles goed hebt meegevolgd kan
je je CustomBrowser testen door op de 'Play'-knop te klikken of door op F5 te duwen. De browser die ik heb gemaakt ziet er zo uit:
Je ziet dat ik afbeeldingen heb gebruikt in de knoppen in plaats van tekts. Je kan in Design - mode gewoon met de linkermuisknop op die knop klikken
en dan 'Set Image' doen. Je Import dan een kleine afbeelding die je wilt gebruiken en je krijgt hetzelfde resultaat.
8. Slot
Zo, hierbij zijn we aan het einde van deze tutorial die een groot stuk gebaseerd was op die van sliphead, met als enige grote verschil dat deze voor C# is. Met de WebBrowser - Control is het heel gemakkelijk om een eigen browser
te maken, want alles daarrond is basis .NET-kennis. Als er vragen en of opmerkingen zijn, stel ze gerust in een reactie of een PM!