.NET how-to: hoe kan ik...
Hoe kan ik ... (in code) in VB.NET? [DT] betekent: kan uiteraard ook in
design time, bij het ontwerpen van het project.
Gebruik de zoekfunctie van je browser als je wil zoeken in deze pagina.
Formulieren en dialogen
- een eigenschap van een object in een formulier opvragen of
instellen
My.Forms.FORMULIERNAAM
[DT]
- ingetikte tekst in een tekstvak maskeren, zoals bij het ingeven van een
paswoord
TextBox1.PasswordChar="*"
[DT]
- de Maximaliseren knop verbergen?
Me.MaximizeBox=False
[DT]
- de Minimaliseren knop verbergen?
Me.MinimizeBox=False
[DT]
- een venster centreren
Je berekent de breedte van de randen rond het scherm (het verschil tussen
schermbreedte en formulierbreedte) en zet het formulier links op de helft
van die breedte. Idem voor de hoogte.
Me.Left=(Screen.PrimaryScreen.WorkingArea.Width - Me.Width)/2
Me.Top=(Screen.PrimaryScreen.WorkingArea.Height - Me.Height)/2
Opletten: die code mag je niet uitvoeren als het venster geminimaliseerd is.
- een bestandsnaam kiezen om te (laten) openen
Je voegt een OpenFileDialog toe aan het project
Dan stel je de eigenschappen in
.DefaultExt
de standaardextensie
.Title
de titel van de dialoog
.FileName
de naam van het bestand
.Filter
de filters voor de bestanden in de vorm
"beschrijving|*.ext|beschrijving|*.ext" (waarbij ext de extensie is voor het
bestandstype)
.FilterIndex
Nummer van de filter die standaard gebruikt wordt.
.InitialDirectory
Map waarin het browsen begonnen wordt. Als je deze niet specifieert, wordtr
de laatsgebruikte map gebruikt.
Let op: je moet nadien nog het bestand laten inlezen.
- een bestandsnaam kiezen om te (laten) opslaan
Je voegt een SaveFileDialog toe aan het project
Dan stel je de eigenschappen in
.DefaultExt
de standaardextensie
.Title
de titel van de dialoog
.FileName
de naam van het bestand
.Filter
de filters voor de bestanden in de vorm "beschrijving|*.ext|beschrijving|*.ext"
(waarbij ext de extensie is voor het bestandstype)
.FilterIndex
Nummer van de filter die standaard gebruikt wordt.
.InitialDirectory
Map waarin het browsen begonnen wordt. Als je deze niet specifieert, wordtr
de laatsgebruikte map gebruikt.
Vervolgens OpenFileDialog1.ShowDialog
De volgende keer kan je OpenFileDialog1.ShowDialog gebruiken met dezelfde
instellingen
Let op: je moet nadien nog het bestand laten opslaan.
- een kleur laten kiezen met een dialoogvenster
Voeg een ColorDialog toe, en toon met ColorDialog1.ShowDialog
De kleur is instelbaar / uitleesbaar met:
Color.R
Color.G
Color.B
rood - geel - blauw waarden tussen 0 en 255
- een lettertype laten kiezen met een dialoogvenster?
Voeg een FontDialog toe
Je kan de dialoogbox tonen met FontDialog1.ShowDialog
De volgende eigenschappen zijn instelbaar resp. uitleesbaar:
Font.Bold (vet of niet)
Font.Italic (cursief of niet)
Font.Name (naam van het lettertype)
Font.Size (lettergrootte)
Font.StrikeOut (doorstreept of niet)
Font.Underline (onderlijnd of niet)
- afdrukopties laten instellen via een dialioogvenster?
Voeg een PrintDialog toe, en toon met ShowDialog
De volgende waarden zijn instelbaar
AllowCurrentPage
Of het keuzevakje voor huidige pagina getoond wordt
AllowPrintToFile
Of het keuzevakje voor afdrukken naar bestand getoond wordt
AllowSelection
Of het keuzevakje voor afdrukken van selectie getoond wordt
AllowSomePages
Of de gebruiker pagina's kan aanduiden
Instelbaar/uitleesbaar zijn:
PrinterSettings.Copies
het aantal exemplaren
PrinterSettings.FromPage
waar het afdrukken moet starten
PrinterSettings.ToPage
waar het afdrukken moet stoppen
PrinterSettings.PrintToFile
Of er moet afgedrukt worden naar een bestand
- het afsluiten onderbreken (bv. omdat de wijzigingen nog niet zijn
opgeslagen)
In .NET kan je het afsluiten van een formulier tegenhouden – bijvoorbeeld
als de gebruiker zijn werk nog niet heeft opgeslagen – in het FormClosing
event. Met e.Cancel=True wordt er niet afgesloten. Met e.CloseReason kan je
achterhalen waarom het formulier gelsoten wordt (bv. door de gebruiker, door
code, door Windows dat wordt afgesloten). Bij wijze van voorbeeld: plaats
een checkbox op een formulier. Als de gebruiker de checkbox aanvinkt, wordt
het afsluiten onderbroken.
Private Sub Form1_FormClosing(ByVal sender As
Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles
Me.FormClosing
If chkNietAfsluiten.Checked Then
MsgBox(e.CloseReason.ToString & vbCrLf & "Maar je hebt ervoor
gekozen om niet af te sluiten")
e.Cancel = True
End If
End Sub
- een map selecteren via een dialoogvenster
Voeg een FolderBrowserDialog toe, en roep op met ShowDialog
Volgende eigenschappen zijn instelbaar / uitleesbaar:
Description (beschrijving)
ShowNewFolderButton (of de gebruiker een nieuwe map mag maken)
Rootfolder (waar te starten - bv. Environment.SpecialFolder.MyDocuments)
- even wachten (bv. om een welkomstscherm te tonen)
System.Threading.Thread.Sleep(aantal_milliseconden)
- toetsaanslagen sturen naar Windows of een andere applicatie
My.Computer.Keyboard.SendKeys(str)
waarbij str de string is die je wil versuren. Daarbij kan je speciale
karakters versturen
{BACKSPACE}
{BACK}
{CAPSLOCK}
{DEL}
{DOWN}
{END}
{ENTER}
{ESC}
{HELP}
{HOME}
{INSERT}
{LEFT}
{NUMLOCK}
{PGDN}
{PGUP}
{PRTSCR}
{RIGHT}
{SCROLLOCK}
{TAB}
{UP}
{F1} ... {F12}
{ADD}
{SUBSTRACT}
{MULTIPLY}
{DIVIDE}
en
control met het voorvoegen van ^
shift met het voorvoegen van +
alt met het voorvoegen van %
- eigenschappen van de muis opvragen
My.Computer.Mouse.WheelExists
'is er een muiswiel?
My.Computer.Mouse.ButtonSwapped
'zijn de knoppen omgedraaid?
- een geanimeerde GIF weergeven
Daarvoor heb je een webbrowser nodig. Voeg er een toe aan je formulier, en
dan
WebBrowser1.Navigate2(pad_naar_animated_gif)
- een stuk code laten uitvoeren op een bepaald moment?
Met een timer
- een stuk code laten uitvoeren als er iets verandert
in een map (bestand toegevoegd, gewijzigd, verwijderd)
Met een FileSystemWatcher
- een icoon laten verschijnen in de systeemwerkset
(naast de klok)
met een NotifyIcon
- gegevens van een databvank weergeven en laten
wijzigen door degebruiker
Met een DataGridView
- een menu laten verschijnen met de druk op de
rechtermuisknop?
met de ContextMenuStrip
Applicatie
- Met My.Application.Info kan je heel wat aspecten van de huidige
toepassing opvragen c.q. instellen, zoals AssemblyName (de interne naam),
Copyright, DirectoryPath (het pad), Version (de versie).

- Met My.Application.CommandLineArgs kan je oplijsten welke parameters
zijn meegegeven aan de applicatie. Die parameters kunnen komen van de
snelkoppeling, of meegegeven doordat de gebruiker gedubbelklikt heeft op een
bestand waarvan de extensie geassocieerd is met onze applicatie.
For Each p In My.Application.CommandLineArgs
MsgBox(p)
Next
- Met My.User kan je een en ander te weten komen over de gebruiker van de
applicatie.

- Om een programma af te sluiten kan je Application.Exit() gebruiken. Met
Me.Close() sluit je het actieve formulier.
Bestanden
- de extensie van een bestand kennen
Vraag de naam van het bestand op, haal uit elkaar met
Split. Dat resulteert in een array, en haal uit die
array het laatste element (Length-1)
Try
Dim fn As String
OpenFileDialog1.ShowDialog()
fn = OpenFileDialog1.FileName
MsgBox(fn)
Dim s As String() 'array
s = fn.Split(".")
MsgBox(s(s.Length - 1))
Catch ex As Exception
MsgBox(ex.Message)
End Try
- Weten welke schijven beschikbaar zijn
Daarvoor heb je de de bibliotheek System.IO nodig (die
je moet importeren) en verder DriveInfo.GetDrive(), die
je een reeks van DriveInfo geeft die je kan doorlopen.
Imports System.IO
Public Class Form1
Private Sub Button1_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim drives As String
For Each drive_info As DriveInfo In
DriveInfo.GetDrives()
drives = drives & vbCrLf & drive_info.Name
Next drive_info
MsgBox(drives)
End Sub
End Class
Als je wil, kan je ook zonder Import statement werken:
Dim drives As String
For Each drive_info As DriveInfo In System.IO.DriveInfo.GetDrives()
drives = drives & vbCrLf & drive_info.Name
Next drive_info
MsgBox(drives)
- Bestanden opvragen in een map kan je doen met
My.Computer.FileSystem.GetFiles, en die reeks kan je doorlopen met For Each:
Dim msg As String
For Each f In My.Computer.FileSystem.GetFiles("c:\")
msg = msg & vbCrLf & f
Next
MsgBox(msg)
Op dezelfde manier kan je submappen oplijsten met
My.Computer.FileSystem.GetDirectories.
- My.Computer.FileSystem is zeer interessant: hier zitten de 'gewone'
bestandsbewerkingen.

- Een bestand kopiëren
My.Computer.FileSystem.CopyFile(bronbestand, doelbestand,
True_indien_eventueel_bestaand_bestand_moet_overschreven_worden)
- Een bestand verplaatsen
My.Computer.FileSystem.MoveFile(bronbestand, doelmap,
True_indien_eventueel_bestaand_bestand_moet_overschreven_worden
- Nagaan of een bestand bestaat
MsgBox(My.Computer.FileSystem.FileExists(bestandsnaam))
- Bestanden verwijderen
My.Computer.FileSystem.DeleteFile(bestandsnaam)
- Bestanden hernoemen
My.Computer.FileSystem.RenameFile
(oorsponkelijkenaam, nieuwenaam)
- Nagaan of een map bestaat
MsgBox(My.Computer.FileSystem.DirectoryExists(mapnaam))
- Een map kopiëren
My.Computer.FileSystem.CopyDirectory(bronmap, doelmap)
- Zoeken of tekst voorkomt in bestanden in een map
my.computer.filesystem.FindInFiles(te_doorzoeken_map,te_zoeken_tekst,hoofdletters_wegdenken?,submappen_of_niet)
Bijvoorbeeld: My.Computer.FileSystem.FindInFiles("c:\", "test", True,
FileIO.SearchOption.SearchAllSubDirectories)
Windows
- invoer blokkeren
BlockInput(True)
BlockInput(False) laat opnieuw invoer van muis en klavier toe
- weten welke speciale toetsen actief zijn
My.Computer.Keyboard
AltKeyDown (is Alt ingedrukt?)
CapsLock (is CapsLock ingedrukt?)
CtrlKeyDown (is Ctrl ingedrukt?)
NumLock (is NumLock actief?)
ScrollLock (is ScrollLock actief?)
- weten waar "My documents" staat
Environment.SpecialFolder.MyDocuments
- andere speciale mappen kennen
"My documents" is ook anders opvraagbaar:
MsgBox(My.Computer.FileSystem.SpecialDirectories.MyDocuments)
Specialdirectories heeft meer opties:

- een waarde naar het register wegschrijven / een waarde wijzigen
My.Computer.Registry.SetValue(locatie, sleutel, waarde)
Bij wijze van voorbeeld: de startpagina wijzigen
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Internet
Explorer\Main\Start Page", "Start page", "http://www.live.com")
Let op: Omwille van beveiliging is het soms niet mogelijk om het
register te wijzigen. En je kan soms een waarschuwing krijgen van
beveiligingssoftware.
- een waarde uit het register inlezen
My.Computer.Registry.SetValue(locatie, sleutel, waarde)
Bij wijze van voorbeeld: de startpagina
MsgBox(My.Computer.Registry.GetValue("HKEY_CURRENT_USER\Software\Microsoft\Internet
Explorer\Main\Start Page", "Start page")
- een REG bestand openen / wegschrijven naar het register
Een REG bestand bevat instellingen voor het Register. Je kan dat aanmaken
met Notepad, of exporteren uit het register (REGEDIT)
Process.Start(pad_naar_reg_bestand)
Internet
- Een bestand downloaden
My.Computer.Network.DownloadFile(http_adres_server,
naam_locaal_bestand, gebruikersnaam, paswoord,
moet_ik_voortgangsbalk_tonen?,maximale_wachttijd_in_seconden,
mag_ik_bestaand_bestand_overschrijven?)
- een bestand uploaden
My.Computer.Network.UploadFile(http_adres_server,
naam_locaal_bestand, gebruikersnaam, paswoord,
moet_ik_voortgangsbalk_tonen?,maximale_wachttijd_in_seconden,
mag_ik_bestaand_bestand_overschrijven?)
- kijken of er netwerk/internetverbindig is
My.Computer.Network.Isavailable
- kijken of een bepaalde server bereikbaar is
My.Computer.Network.Ping(ip_adres_of_serveradres)
My.Computer.Network.Ping(ip_adres_of_serveradres,
maximumtijd_in_milliseconden)
- een e-mail sturen 1
Je kan gebruikmaken van het mailto: protocol om de standaard mailclient te
laten openen.
Dim p As New Process
p.StartInfo.FileName="Mailto:"
p.StartInfo.Verb="Open"
p.StartInfo.CreateNoWindow = True
p.Start
Als je wil kan je parameters meegeven.
Dim p As New Process
p.StartInfo.FileName="Mailto:ADDRES?subject=ONDERWERP&body=BOODSCHAP"
p.StartInfo.Verb="Open"
p.StartInfo.CreateNoWindow = True
p.Start
- een e-mail sturen 2
Het kan ook met
System.Web.Mail.SmtpMail.Send(verzender,ontvanger,pnderwerp,inhoud)
De vorige methoden laten niet toe om HTML berichten (met opmaak) of
bijlagen te versturen. Dat kan wel zo:
Dim bericht As New System.Net.Mail.MailMessage(verzender,
bestemmeling)
bericht.Subject=onderwerp
bericht.Body=inhoud
bericht.IsBodyHTML=True 'als het een HTML bericht is
'en om iets toe te voegen
Dim toetevoegen as New Net.Mail.Attachment(pad_naar_lokaal_bestand)
bericht.Attachments.Add(toetevoegen)
'en vervolgens verzenden
Dim verzendclient As New System.Mail.SmtpClient()
Dim autenticatie As New System.Net.NetworkCredential(gebruikersnaam,paswoord)
verzendclient.Host=smtp_server
verzendclient.UseDefaultCredentials = False
verzendclient.Credentials=autenticatie
verzendclient.Send(bericht)
Varia
- Een systeemgeluid afspelen

Voor een beep bijvoorbeeld:
My.Computer.Audio.PlaySystemSound(Media.SystemSounds.Beep)
- Een ander geluid afspelen
My.Computer.Audio.Play(bestandsnaam)
- Het afspelen van een geluid stoppen
My.Computer.Audio.Stop()
- Word opstarten
Dim wa As Object
wa = CreateObject("Word.Application")
wa.visible = True
[VB Web] - [hlrnet] - [copyright]