Hi!
Ich habe mir einen Pictureviewer programmiert, nun sammelt dieser in seinem StartupFolder die Bilddateien, sortiert sie alphabetisch und zeigt sie der Reihenfolge nach an. Nun möchte ich, dass beim Druck auf Enter ein kleines Fenster zur Ordnerauswahl erscheint. Wenn ein Ordner gewählt wurde, soll die COllection 'files' geleert werden und halt meine Form_Load-Prozedur mit dem Inhalt dieses Ordners wiederholt werden. Ich hoffe, ich habe mich verständlich ausgedrückt.
Hier ist mein Code:
Imports System.IO
Imports System.Collections.Generic
Imports System.Drawing
Public Class Form1
Declare Function ShowCursor Lib "user32" (ByVal bShow As Boolean) As Long
Dim CursorHidden As Boolean
Dim files As New List(Of FileInfo)
Dim ActIndex As Integer
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As _
System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
If CursorHidden Then ShowCursor(True)
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As _
System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If e.CloseReason = CloseReason.ApplicationExitCall Then Exit Sub
If MessageBox.Show("Beenden?", "[TYFOO]:.", MessageBoxButtons.YesNo, _
MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) = _
Windows.Forms.DialogResult.No Then
e.Cancel = True
End If
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As _
System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.Right
ActIndex += 1
If ActIndex >= files.Count Then ActIndex = 0
ShowAct()
Case Keys.Left
ActIndex -= 1
If ActIndex < 0 Then ActIndex = files.Count - 1
ShowAct()
Case Keys.Escape
Me.Close()
End Select
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
pic.Top = 0
pic.Left = 0
pic.Height = Me.ClientRectangle.Height
pic.Width = Me.ClientRectangle.Width
Dim Folder As New DirectoryInfo(Application.StartupPath)
files.AddRange(Folder.GetFiles("*.jpg"))
files.AddRange(Folder.GetFiles("*.png"))
files.AddRange(Folder.GetFiles("*.gif"))
files.AddRange(Folder.GetFiles("*.bmp"))
files.Sort(New FileComparer)
If files.Count = 0 Then
MsgBox("Es wurden keine Bilddateien gefunden!", "Fehler", _
MessageBoxIcon.Error)
Application.Exit()
End If
ShowAct()
End Sub
Public Sub ShowAct()
pic.Image = Image.FromFile(files(ActIndex).FullName)
End Sub
Private Sub bt_close_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles bt_close.Paint
bt_close.BackColor = Color.Transparent
bt_close.Parent = pic
End Sub
Private Sub bt_next_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles bt_next.Paint
bt_next.BackColor = Color.Transparent
bt_next.Parent = pic
End Sub
Private Sub bt_prev_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles bt_prev.Paint
bt_prev.BackColor = Color.Transparent
bt_prev.Parent = pic
End Sub
Private Sub bt_close_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles bt_close.Click
Me.Close()
End Sub
Private Sub bt_next_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles bt_next.Click
ActIndex += 1
If ActIndex >= files.Count Then ActIndex = 0
ShowAct()
End Sub
Private Sub bt_prev_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles bt_prev.Click
ActIndex -= 1
If ActIndex < 0 Then ActIndex = files.Count - 1
ShowAct()
End Sub
End Class
Public Class FileComparer
Implements IComparer(Of FileInfo)
Public Function Compare(ByVal x As System.IO.FileInfo, ByVal y As _
System.IO.FileInfo) As Integer Implements _
System.Collections.Generic.IComparer(Of System.IO.FileInfo).Compare
Return x.Name < y.Name
End Function
End Class Gruß, Stefan
[TYFOO]:. |