copyright 1999 - 2014 by heinz prelle - hannover  - lenbachstraße 42 - www.visual-basic5.de | impressum
'Beispiel: VB .NET - Slideshow Bilder eines Ordners mit dem Timer Control abspielen - 2

'Hinweis : Passen Sie den hier verwendeten Pfad ihrem System an.

Option Explicit On
Option Strict On

Public Class Form1

    Private CountImages As Integer = -1
    Private ImageList As New List(Of String)

    Public _interval As Integer = 2000
    Public Property TimerInterval() As Integer
        Get
            Return _interval
        End Get
        Set(ByVal value As Integer)
            _interval = value
        End Set
    End Property

    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.KeyCode = Keys.Escape Then
            Application.Exit()
        End If
    End Sub

    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
            Handles Me.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Left Then
            Application.Exit()
        ElseIf e.Button = Windows.Forms.MouseButtons.Middle Then
            'Zeit einstellen...
            Dim frm As New Form2
            frm.ShowDialog()

        ElseIf e.Button = Windows.Forms.MouseButtons.Right Then
            'Neues Verzeichnis waehlen...
            '
            With Me
                .Timer1.Stop()
                .CountImages = -1
                .ImageList.Clear()
                Try
                    Dim Path As String = Me.ImageDirectory()
                    If Path IsNot Nothing Then
                        Dim di As IO.DirectoryInfo = New IO.DirectoryInfo(Path)
                        If Not di.Exists() Then
                            MessageBox.Show("Verzeichnis wurde nicht gefunden...", "Info")
                        Else
                            With Me
                                .Label1.Text = di.FullName()
                                .ImageList.AddRange(IO.Directory.GetFiles(di.FullName(), "*.jpg"))
                                .Label2.Text = .ImageList.Count().ToString() & " Bilder zur Anzeige vorhanden..."
                                .Timer1.Interval = TimerInterval()
                                .Timer1.Start()
                            End With
                        End If
                    Else
                        MessageBox.Show("Die Verzeichnisauswahl wurde abgebrochen...", "Info")
                        Timer1.Stop()
                        Exit Sub
                    End If
                Catch ex As Exception
                    Throw New Exception("Error...")
                End Try
            End With
        End If
    End Sub

    Public StretchOrZoom As Boolean = False
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
            Handles MyBase.Load
        With Me
            .FormBorderStyle = Windows.Forms.FormBorderStyle.None
            .WindowState = FormWindowState.Maximized

            Dim frm As New Form3
            frm.ShowDialog()
            If StretchOrZoom Then
                .BackgroundImageLayout = ImageLayout.Stretch
            Else
                .BackgroundImageLayout = ImageLayout.Zoom
            End If

            .DoubleBuffered = True
            .Label1.Text = ""
            .Label2.Text = ""
            .Label3.Text = ""
            .Label4.Text = ""
            .Label5.Text = "?"
            '
            '
            Try
                Dim Path As String = Me.ImageDirectory()
                If Path IsNot Nothing Then
                    Dim di As IO.DirectoryInfo = New IO.DirectoryInfo(Path)
                    If Not di.Exists() Then
                        MessageBox.Show("Verzeichnis wurde nicht gefunden...", "Info")
                    Else
                        With Me
                            .Label1.Text = di.FullName()
                            .ImageList.AddRange(IO.Directory.GetFiles(di.FullName(), "*.jpg"))
                            .Label2.Text = .ImageList.Count().ToString() & " Bilder zur Anzeige vorhanden..."
                            .Timer1.Interval = TimerInterval()
                            .Timer1.Start()
                        End With
                    End If
                Else
                    MessageBox.Show("Die Verzeichnisauswahl wurde abgebrochen...", "Info")
                    Timer1.Stop()
                    Exit Sub
                End If
            Catch ex As Exception
                Throw New Exception("Error...")
            End Try
        End With
    End Sub

    Private ReadOnly Property ImageDirectory() As String
        Get
            Dim fbd As FolderBrowserDialog = New FolderBrowserDialog
            With fbd
                .Description = "Waehlen Sie einen Bilderordner aus..."
                If .ShowDialog = Windows.Forms.DialogResult.Cancel Then
                    Return Nothing
                Else
                    Return .SelectedPath
                End If
            End With
        End Get
    End Property

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        ShowImages()
    End Sub

    Private Sub ShowImages()
        If ImageList.Count = 0 Then
            MessageBox.Show("Der entsprechende Dateityp (.jpg) wurde in dem ausgewaehlten Verzeichnis nicht gefunden!", "Info")
            Me.Timer1.Stop()
            Exit Sub
        End If
        Me.Timer1.Interval = Me.TimerInterval()
        CountImages += 1
        If CountImages = ImageList.Count Then
            CountImages = 0
        End If
        With Me
            If Not .BackgroundImage Is Nothing Then
                DirectCast(.BackgroundImage, Image).Dispose()
            End If
            '
            .BackgroundImage = Image.FromFile(ImageList(CountImages))
            '
            If CountImages + 1 = 1 Then
                .Label3.Text = (CountImages + 1).ToString() & " Bild von " & .ImageList.Count().ToString() & " abgespielt"
            Else
                .Label3.Text = (CountImages + 1).ToString() & " Bilder von " & .ImageList.Count().ToString() & " abgespielt"
            End If
            .Label4.Text = (Me.TimerInterval() / 1000).ToString() & " Sekunden Abspieldauer pro Bild"
        End With
    End Sub

    Private Sub Label5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label5.Click
        Dim msg As String = ""
        msg = "Hilfe:" & System.Environment.NewLine()
        msg &= "" & System.Environment.NewLine()
        msg &= "Ein Klick mit der linken Maustaste beendet das Beispiel." & System.Environment.NewLine()
        msg &= "Ein Klick mit der mittleren Maustaste ruft ein Fenster zur Zeitkonfiguration auf." & System.Environment.NewLine()
        msg &= "Ein Klick mit der rechten Maustaste ruft den Dialog zu einer neuen Ordnerauswahl auf." & System.Environment.NewLine()
        msg &= "" & System.Environment.NewLine()
        msg &= "http://www.visual-basic5.de"
        MessageBox.Show(msg, "Hilfe")
    End Sub
End Class

'Form2
'Zeit einstellen
'
Option Explicit On
Option Strict On

Public Class Form2

    Private Value As Integer = 1000

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
            Handles MyBase.Load
        With Me
            .GroupBox1.Text = "Zeit einstellen: "
            .Text = "Zeit einstellen..."
            For Each lbl As Control In .GroupBox1.Controls
                With lbl
                    Value += 1000
                    .Text = Value.ToString()
                End With
            Next
            .RadioButton1.Checked = True
        End With
    End Sub

    Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles RadioButton1.CheckedChanged, _
        RadioButton2.CheckedChanged, _
        RadioButton3.CheckedChanged, _
        RadioButton4.CheckedChanged, _
        RadioButton5.CheckedChanged, _
        RadioButton6.CheckedChanged

        Dim rb As RadioButton = CType(sender, RadioButton)

        Select Case rb.Name
            Case "RadioButton1"
                Form1._interval = CType(rb.Text, Integer)
            Case "RadioButton2"
                Form1._interval = CType(rb.Text, Integer)
            Case "RadioButton3"
                Form1._interval = CType(rb.Text, Integer)
            Case "RadioButton4"
                Form1._interval = CType(rb.Text, Integer)
            Case "RadioButton5"
                Form1._interval = CType(rb.Text, Integer)
            Case "RadioButton6"
                Form1._interval = CType(rb.Text, Integer)
        End Select
    End Sub

    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub

End Class

'Form3
'
'Augabe im Stretch oder Zoom Modus
'
Option Explicit On
Option Strict On

Public Class Form3

    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
            Handles MyBase.Load
        With Me
            .Text = "Bildausgabe gestretcht oder gezoomt?"
            .CenterToScreen()
            With Me.CheckBox1
                .Text = "Stretch"
                .Checked = True
            End With
        End With
    End Sub

    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _
            Handles CheckBox1.CheckedChanged
        If Me.CheckBox1.Checked Then
            Form1.StretchOrZoom = True
            Me.CheckBox1.Text = "Stretch"
        Else
            Form1.StretchOrZoom = False
            Me.CheckBox1.Text = "Zoom"
        End If
    End Sub

End Class
Sourcecode Visual Basic
Download (.zip) Projektdateien