login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[VB .NET] Bind Event aan Alle PictureBox (Opgelost)

Offline JBke - 25/11/2007 13:14
Avatar van JBkePHP gevorderde Hoi,

Ik ben een applicatie aan het schrijven voor het werk en had er graag iets extra's aan toe gevoegd. Ik had graag de gebruiker zelf een achtergrondafbeelding voor zijn applicatie willen laten kiezen. Ik gebruik een FolderBrowserDialog om de gebruiker een folder te laten openen die daarna wordt uitgelezen en al de bestandsnamen worden in een array gestoken. Indien het bestand een afbeelding is wordt deze weergegeven in een nieuwe PictureBox. Nu had ik graag aan elke PictureBox een event gekoppeld bij PictureBox.Click. Hoe kan ik dit het beste aanpakken???

  1. Private Sub ImageSelectDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.  
  3. Dim Marg As New Padding
  4. Dim Loc As Point
  5. Dim Filename As String
  6. Loc.X = 10
  7. Loc.Y = 10
  8.  
  9. For Each Filename In OptionsMainDialog.Filenames
  10.  
  11. Dim PictureBox As New PictureBox
  12. PictureBox.Height = 100
  13. PictureBox.Width = 100
  14. Dim Extension As String = Path.GetExtension(Filename)
  15. If (Me.InArray(Me.ArrayPictureExtensions, Extension)) Then
  16. PictureBox.Location = Loc
  17. PictureBox.Image = Image.FromFile(Filename)
  18. PictureBox.Parent = Me
  19. PictureBox.CreateGraphics()
  20. PictureBox.Show()
  21. PictureBox.Enabled = True
  22. Loc.X += 110
  23. If (Loc.X > 700) Then
  24. Loc.X = 10
  25. Loc.Y += 110
  26. End If
  27. End If
  28. Next
  29.  
  30. End Sub


Ik kan uiteraard lege PictureBoxen aanmaken en Daaraan steeds dezlefde PictureBox_Click event aan koppelen maar hoe kan ik het met het stukje code hierboven oplossen waar ik steeds een nieuwe PictureBox creëer??

Alvast bedankt.

6 antwoorden

Gesponsorde links
Offline Wim - 25/11/2007 13:52
Avatar van Wim Crew algemeen als je een event maakt krijg je iets zoals hierboven regel 1, vanachter zie je: handles ......

voeg daar al je picture boxen toe en die procedure zal voor al die picutre boxen gebruikt worden
Offline JBke - 25/11/2007 14:04
Avatar van JBke PHP gevorderde zover was ik ook enkel is het probleem dat ik niet telkens met evenveel boxen zit dat hangt af van het aantal afbeeldingen in de geopende folder. Ik gebruik dus een loop zoals je in mijn code zal merken om telkens een afbeelding neer te zetten. Ik kan uiteraard weer gaan werken met X aantal vastgelegde PictureBoxen en daarin de afbeelding zetten maar vond deze manier wel korter.

Als ik handles PictureBox.Click gebruik in samengang met bovstaande code werkt het niet.

Thx anyway
Offline Wim - 25/11/2007 14:11
Avatar van Wim Crew algemeen apparte procedure en die telkens laten aanroepen dan?
Offline Abbas - 25/11/2007 22:04
Avatar van Abbas Gouden medaille

Crew .NET
Tijdens het aanmaken van die PictureBox maak je er ineens een event bij. Dit event maak je een keer in je code. Hier is een simpel codevoorbeeldje om aan te tonen wat ik wil zeggen:

  1. Public Class Form1
  2.  
  3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  4.  
  5. 'Declareren variabelen
  6. Dim i As Integer
  7. Dim pic_box As PictureBox
  8.  
  9. 'Mini-loop om jouw voorbeeld te volgen
  10. For i = 0 To 1
  11.  
  12. 'Nieuwe PictureBix maken en de locatie voor de eerste instellen
  13. pic_box = New PictureBox
  14. pic_box.Location = New System.Drawing.Point(30, 30)
  15.  
  16. 'De loop gaat maar twee keer en de tweede keer zet hij een andere locatie
  17. 'Ik weet het, dit is lelijke qua code maar het is om het duidelijk te maken
  18. If i = 1 Then
  19. pic_box.Location = New System.Drawing.Point(100, 30)
  20. End If
  21.  
  22. 'De grootte van de PictureBox instellen en de achtergrondkleur op zwart zetten
  23. 'zodat je hem kan zien, aangezien ik er geen afbeelding aan geef
  24. pic_box.Size = New System.Drawing.Size(20, 20)
  25. pic_box.BackColor = Color.Black
  26.  
  27. 'Control toevoegen aan de Form
  28. Me.Controls.Add(pic_box)
  29. 'Hier is het belangrijke stuk:
  30. 'Een event toevoegen via de AddHandler
  31. 'Het eerste is het type - event definieren, het zou bvb. ook een MouseHover kunnen zijn
  32. 'Het tweede is de naam die je meegeeft, als er dan staat "Me.Blaat" moet het event Blaat noemen
  33. AddHandler pic_box.Click, AddressOf Me.Klik
  34.  
  35. Next
  36.  
  37. End Sub
  38.  
  39. 'Hier is het event dat je dan aanroept vanuit de PictureBox
  40. 'In dit voorbeeld is het maar een HelloWorld MessageBox weergeeft
  41. Private Sub Klik(ByVal sender As Object, ByVal E As System.EventArgs)
  42.  
  43. MessageBox.Show("Hello World")
  44.  
  45. End Sub
  46. End Class

Deze code heb ik gebruikt met niets op de Form dus ze werkt. Ik hoop dat je hier iets mee bent! 
Offline JBke - 26/11/2007 19:24
Avatar van JBke PHP gevorderde Bedankt titjes dat is wat ik zocht, zou je hulp nog wel eens kunnen gebruiken vermoed ik mag ik eens een volledige code van een application naar je ddorsturen, zit nog met enkele knelpunten, btw ben nog maar 2 tot 3 maand bezig met VB .NET.
Offline Abbas - 26/11/2007 20:04
Avatar van Abbas Gouden medaille

Crew .NET
Ja dat is in orde, stuur je code maar. Dan kan ik zien wat ik voor je kan doen. Goed?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.181s