Hi,
I'm relatively new at programming, so please bare with me.
What I have:
On load fetching image files from folder and creating tiles with those images.
Also, I have an event handler when a file added to folder, to add a new tile.
On load everything works fine and tiles are added. On event, the same sub that generates the tile fails in the "End Sub" with
"An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll" and I'm unable to understand what I'm doing wrong.
My code:
Imports System.IO
Imports System.Diagnostics
Imports Telerik.WinControls
Imports Telerik.WinControls.UI
Imports System.Threading
Imports System.ComponentModel
Public Class GridWindow
Public watchfolder As FileSystemWatcher
Dim itemCol As New List(Of String)
Dim fileCount As Int32
Public Sub fillGrid()
Try
Dim watchfdr As New FileSystemWatcher
watchfdr.Path = My.Settings.sourcefldr
Dim txtFiles = Directory.GetFiles(watchfdr.Path, "*.*", SearchOption.TopDirectoryOnly).[Select](Function(nm) Path.GetFileName(nm))
If txtFiles.Count > 0 Then
For Each filenm As String In txtFiles
itemCol.Add(filenm)
Next
fileCount = itemCol.Count()
End If
If itemCol.Count > 0 Then
For Each filenm In itemCol
AddNewImageTile(filenm)
Next
End If
watchfdr.NotifyFilter = IO.NotifyFilters.DirectoryName
watchfdr.NotifyFilter = watchfdr.NotifyFilter Or _
IO.NotifyFilters.FileName
watchfdr.NotifyFilter = watchfdr.NotifyFilter Or _
IO.NotifyFilters.Attributes
AddHandler watchfdr.Created, AddressOf fileAdded
watchfdr.EnableRaisingEvents = True
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub fileAdded(ByVal source As Object, ByVal e As System.IO.FileSystemEventArgs)
Try
If e.ChangeType = IO.WatcherChangeTypes.Created Then
Dim shortPath As String = e.FullPath.Substring(e.FullPath.LastIndexOf("\") + 1)
AddNewImageTile(shortPath)
'itemCol.Add(e.FullPath.ToString())
End If
Catch ex As Exception
MessageBox.Show("Exception in fileAdded: " & ex.Message)
End Try
End Sub
Private Sub AddNewImageTile(ImagePath)
Try
Dim img As Bitmap = CType(Image.FromFile(My.Settings.sourcefldr.ToString & "\" & ImagePath, True), Bitmap)
Dim newTile As New RadTileElement()
newTile.AutoSize = True
newTile.AutoSizeMode = Telerik.WinControls.RadAutoSizeMode.Auto
newTile.GradientStyle = Telerik.WinControls.GradientStyles.Linear
newTile.Image = img
newTile.Padding = New System.Windows.Forms.Padding(1)
newTile.Size = New System.Drawing.Size(214, 276)
newTile.Row = RadPanorama1.Items.Count Mod Me.RadPanorama1.RowsCount
newTile.Column = RadPanorama1.Items.Count / Me.RadPanorama1.RowsCount
newTile.Visibility = ElementVisibility.Visible
Me.RadPanorama1.Items.Add(newTile)
Catch ex As Exception
MessageBox.Show("Exception in AddNewImage: " & ex.Message)
End Try
End Sub
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
fillGrid()
End Sub
End Class