scribbleh Skrevet 19. mars 2007 Del Skrevet 19. mars 2007 hvordan får jeg .exe filer som er i en mappe listet opp i en boks på kjermen? og når man trykker på en av .exe filene i den boksen så starter du den fila Lenke til kommentar
aadnk Skrevet 19. mars 2007 Del Skrevet 19. mars 2007 (endret) I VB .NET kan dette gjøres på en rekke forskjellige måter, blant annet ved å anvende en listeboks. Lag en ny listeboks med navn lstFiles, og legg til følgende kode til formen: Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ' Fyller listeboksen med alle EXE-filer fra en gitt mappe lstFiles.DataSource = IO.Directory.GetFiles("C:\", "*.exe") End Sub Private Sub lstFiles_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lstFiles.MouseDoubleClick ' Dersom et element er markert, ... If lstFiles.SelectedIndex <> 0 Then ' ... kjøres det. System.Diagnostics.Process.Start(lstFiles.Text) End If End Sub En annen mulighet er å benytte OpenFile-dialogboksene: Dim oDialog As New OpenFileDialog ' Initialiserer innstillinger With oDialog .Filter = "Applications (*.exe)|*.exe" .InitialDirectory = "C:\" End With ' Dersom brukeren godkjenner en fil, ... If oDialog.ShowDialog Then ' ... kjører vi den. Diagnostics.Process.Start(oDialog.FileName) End If Endret 19. mars 2007 av aadnk Lenke til kommentar
scribbleh Skrevet 22. mars 2007 Forfatter Del Skrevet 22. mars 2007 Tusen takk! gikk for det første eksempellet ditt:) funka som en drømm! men en ting.. hvis jeg har flere lister på forskjellige tabs.. da får jeg en feil på Private Sub Form1_Load ellerno.. selv om jeg gjorde om navnet på boxen og i koden.. Lenke til kommentar
aadnk Skrevet 22. mars 2007 Del Skrevet 22. mars 2007 hvis jeg har flere lister på forskjellige tabs.. da får jeg en feil påPrivate Sub Form1_Load ellerno.. selv om jeg gjorde om navnet på boxen og i koden.. 8208497[/snapback] Dersom du skal legge til flere listebokser, må du legge DataSource i samme prosedyre - dvs. koden skal kun inneholde èn Form_Load. Det kan nok også gagne å bruke AddHandler i denne sammenhengen: Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ' Initialiserer listebokser FillList(ListBox1, "C:\", "*.*") FillList(ListBox2, "D:\", "*.*") End Sub Public Sub FillList(ByVal Control As ListBox, ByVal Path As String, ByVal SearchPattern As String) ' Først initialiser vi innholdet Control.DataSource = IO.Directory.GetFiles(Path, SearchPattern) ' Deretter linker vi prosedyren nedenfor til listeboksens hendelse AddHandler Control.MouseDoubleClick, AddressOf FileList_MouseDoubleClick End Sub Private Sub FileList_MouseDoubleClick(ByVal Sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) ' Dersom et element er markert, ... If Sender.SelectedIndex <> 0 Then ' ... kjøres det. System.Diagnostics.Process.Start(Sender.Text) End If End Sub Lenke til kommentar
scribbleh Skrevet 22. mars 2007 Forfatter Del Skrevet 22. mars 2007 der ja men det skjer ikke no når jeg trykker på innholdet.. Lenke til kommentar
scribbleh Skrevet 10. april 2007 Forfatter Del Skrevet 10. april 2007 jeg lagde programmet mitt på en annen måte nå.. så jeg fulgte det første eksempelet ditt.. men kan jeg få liste boksen til å vise bare navnet på .exe filen istedet for hele adressen? Lenke til kommentar
aadnk Skrevet 10. april 2007 Del Skrevet 10. april 2007 (endret) så jeg fulgte det første eksempelet ditt.. men kan jeg få liste boksen til å vise bare navnet på .exe filen istedet for hele adressen? 8346847[/snapback] Kan hende som følger? Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ' Initialiser listeboks FillList(lstFiles, "C:\", "*.*") End Sub Public Sub FillList(ByVal Control As ListBox, ByVal Path As String, ByVal SearchPattern As String) ' Lagre en String-array av alle filene i Tag-egenskapen Control.Tag = IO.Directory.GetFiles(Path, SearchPattern) ' Hent filnavnet i hver filsti og vis dem i listeboksen For Each File As String In Control.Tag Control.Items.Add(IO.Path.GetFileName(File)) Next ' Deretter linker vi prosedyren nedenfor til listeboksens hendelse AddHandler Control.MouseDoubleClick, AddressOf FileList_MouseDoubleClick End Sub Private Sub FileList_MouseDoubleClick(ByVal Sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) ' Dersom et element er markert, ... If Sender.SelectedIndex <> 0 Then ' ... kjøres det. System.Diagnostics.Process.Start(Sender.Tag(Sender.SelectedIndex)) End If End Sub Endret 10. april 2007 av aadnk Lenke til kommentar
scribbleh Skrevet 10. april 2007 Forfatter Del Skrevet 10. april 2007 hele adressa står der enda :/ Lenke til kommentar
aadnk Skrevet 10. april 2007 Del Skrevet 10. april 2007 hele adressa står der enda :/ 8346970[/snapback] Ah, beklager, det var litt sent nattestid. Jeg glemte å legge ved IO.Path.GetFileName. Lenke til kommentar
scribbleh Skrevet 11. april 2007 Forfatter Del Skrevet 11. april 2007 hvor i koden skal jeg sette det? Lenke til kommentar
aadnk Skrevet 12. april 2007 Del Skrevet 12. april 2007 (endret) hvor i koden skal jeg sette det? 8360934[/snapback] Som du kan se i innlegget ovenfor mitt forrige, har jeg oppdatert koden til å reflektere de endringer som var nødvendige. For øvrig kan jeg nevne det er linjen Control.Items.Add(File) som skal endres til Control.Items.Add(IO.Path.GetFileName(File)). Endret 12. april 2007 av aadnk Lenke til kommentar
scribbleh Skrevet 13. april 2007 Forfatter Del Skrevet 13. april 2007 hehe ok la ikke merke til det tusen takk Lenke til kommentar
scribbleh Skrevet 13. april 2007 Forfatter Del Skrevet 13. april 2007 det skjer ikke noe når jeg trykker på ting i lista.. what do i do all mighty aadnk? Lenke til kommentar
GeirGrusom Skrevet 13. april 2007 Del Skrevet 13. april 2007 Btw, i VB.NET kan du lage en egen klasse som du legger inn i lista Public Class Item Protected m_filename As String Public Property Filename() As String Get() Return m_filename End Get Set(value As String) m_filename = value End Set End Property Public Sub LaunchExe() System.Diagnostics.Process.Start(m_filename) End Sub Public Overrides Function ToString() As String Return System.IO.Path.GetFilename(m_filename) End Function Public Sub New(filename As String) m_filename = filename End Sub End Class Disse kan du legge rett inn i ListBoksen. ToString() metoden sier hva listboksen skal vise. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå