Hallo,
ich benötige ein paar Denkanstöße für folgendes Vorhaben:
Eine Applikation ermittelt per FileSystemWatcher, ob neue (Bild-)Dateien in einem Ordner eintreffen. Wenn ja, soll von diesem ein Thumbnail erstellt und dynamisch in kleinen Pictureboxen auf der Form angezeigt werden. Auf der Form muss jedes Thumbnail klickbar sein, so dass ich per Klick auf das Thumbnail für das Original eine Aktion auslösen kann, z.B. die Orginal-Datei wieder löschen oder ähnliches.
Was bisher funktioniert ist der File-Watcher und das erstellen von Thumbnails. Was nicht funktioniert ist erstens, das dynamische erstellen, wenn es einfach aus einer eigenen Sub heraus gemacht wird (dann wird nichts angezeigt, im Gegensatz zu z.B. Timer- oder Button-Klick, da wird es angezeigt, ist aber unpraktisch, weil es ja automatisch passieren soll) und daraus folgend das Problem, dass immer nur das letzte Thumbnail klickbar ist.
Ich hoffe irgendwer hat die zündenden Ideen.
Besten Dank schon mal!!!
Hier der bisherige Code
ich benötige ein paar Denkanstöße für folgendes Vorhaben:
Eine Applikation ermittelt per FileSystemWatcher, ob neue (Bild-)Dateien in einem Ordner eintreffen. Wenn ja, soll von diesem ein Thumbnail erstellt und dynamisch in kleinen Pictureboxen auf der Form angezeigt werden. Auf der Form muss jedes Thumbnail klickbar sein, so dass ich per Klick auf das Thumbnail für das Original eine Aktion auslösen kann, z.B. die Orginal-Datei wieder löschen oder ähnliches.
Was bisher funktioniert ist der File-Watcher und das erstellen von Thumbnails. Was nicht funktioniert ist erstens, das dynamische erstellen, wenn es einfach aus einer eigenen Sub heraus gemacht wird (dann wird nichts angezeigt, im Gegensatz zu z.B. Timer- oder Button-Klick, da wird es angezeigt, ist aber unpraktisch, weil es ja automatisch passieren soll) und daraus folgend das Problem, dass immer nur das letzte Thumbnail klickbar ist.
Ich hoffe irgendwer hat die zündenden Ideen.
Besten Dank schon mal!!!
Hier der bisherige Code
Quellcode
- Option Explicit On
- Imports System
- Imports System.IO
- Imports Microsoft.VisualBasic
- Imports System.Security.Permissions
- Public Class Form1
- Public posY As Integer = 50
- Public posX As Integer = 50
- Dim i As Integer = 1
- Dim sDestination As String = "d:\Income\Original"
- Public Shared iAllPicsCounter As Integer 'Variable für anzahl der Bilder
- Public Shared allpics() As String 'Variable mit allen Bilddateinamen
- Public Shared pics() As PictureBox
- Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- 'Hauptformular maximieren, Contols "Schließen, minimieren ctc." ausblenden und farbe festlegen (FULLSCREEN) sowie Ecken abrunden
- Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
- Me.WindowState = FormWindowState.Maximized
- eckenabrunden(Me, 0, 0, Me.Width, Me.Height, 20)
- Me.BackColor = Color.WhiteSmoke
- myFilewatcher()
- End Sub
- Private Sub pics_Click(ByVal sender As Object, _
- ByVal e As System.EventArgs)
- ' Click-Ereignis des Button-Arrays auswerten
- Dim itemClicked As PictureBox = CType(sender, PictureBox)
- Dim index As Integer = -1I
- ' Das betroffene Element im Array suchen (allgemein);
- ' Möglich wäre etwa auch das Vorgehen über die eigens
- ' zugewiesene Name-Eigenschaft des Buttons.
- For i As Integer = LBound(pics) To UBound(pics)
- If pics(i) Is itemClicked Then
- index = i
- Exit For
- End If
- Next
- If index >= 0 Then ' Element im Array gefunden (sonst index = -1)
- ' Kurze Informations-MessageBox für das Codebeispiel
- MessageBox.Show("Sie haben den Button Nr. " & CStr(index) & " angeklickt", _
- "Index des Buttons ermittelt", _
- MessageBoxButtons.OK, _
- MessageBoxIcon.Information)
- End If
- End Sub
- Private Sub myFilewatcher()
- ' Create a new FileSystemWatcher and set its properties.
- Dim watcher As New FileSystemWatcher()
- watcher.Path = "D:\Income"
- ' Watch for changes in LastAccess and LastWrite times, and
- ' the renaming of files or directories.
- watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
- ' Only watch text files.
- watcher.Filter = "*.jpg"
- ' Add event handlers.
- AddHandler watcher.Changed, AddressOf OnChanged
- AddHandler watcher.Created, AddressOf OnChanged
- AddHandler watcher.Deleted, AddressOf OnChanged
- 'AddHandler watcher.Renamed, AddressOf OnRenamed
- ' Begin watching.
- watcher.EnableRaisingEvents = True
- End Sub
- 'Define the event handlers.
- Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
- ' Specify what is done when a file is changed, created, or deleted.
- 'MsgBox("File: " & e.FullPath & " " & e.ChangeType)
- 'Wenn Datei reinkommt, dann verschieben in Income
- If e.ChangeType = 1 Then
- 'MsgBox(e.FullPath.ToString & " eingegangen")
- Form1.MoveFile(e.FullPath.ToString)
- End If
- End Sub
- Public Sub MoveFile(sQuelle As String)
- Dim sTime As String = Replace(TimeOfDay, ":", "")
- Dim sFileName As String = ""
- 'Dateinamen und Datei.Erweiterung aus Pfad extrhieren
- sFileName = IO.Path.GetFileName(sQuelle)
- 'Datei Verschieben in Income
- My.Computer.FileSystem.MoveFile(sQuelle, sDestination & "\" & sTime & "_" & sFileName)
- 'Counter hochzählen und Dateinamen in Array schreiben
- iAllPicsCounter = iAllPicsCounter + 1
- ReDim Preserve allpics(iAllPicsCounter)
- allpics(iAllPicsCounter) = sTime & "_" & sFileName
- AddPictures()
- End Sub
- Private Sub AddPictures()
- ReDim pics(iAllPicsCounter)
- pics(iAllPicsCounter) = New PictureBox
- With pics(iAllPicsCounter)
- .Image = Image.FromFile(sDestination & "\" & allpics(iAllPicsCounter)).GetThumbnailImage(100, 100, Nothing, Nothing)
- .Width = 100
- .Height = 100
- .Top = posY
- .Left = posX
- .Name = "Picbox" & CStr(iAllPicsCounter)
- .Parent = Me
- .BringToFront()
- .Visible = True
- End With
- eckenabrunden(pics(iAllPicsCounter), 0, 0, pics(iAllPicsCounter).Width, pics(iAllPicsCounter).Height, 20)
- Me.Controls.Add(pics(iAllPicsCounter))
- AddHandler pics(iAllPicsCounter).Click, AddressOf pics_Click
- If posX >= 800 Then
- posX = 50
- posY += 100
- Else
- posX += 110
- End If
- End Sub
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Vulpes“ ()