ListBox.SelectedItem.ToString

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    ListBox.SelectedItem.ToString

    Hallo
    ich habe eine Frage an euch.

    In einer ListBox werden die PDF aus einen Ordner angezeigt. Beim anklicken (in der ListBox) einer PDF wird die PDF angezeigt ( AxAcroPDF1.LoadFile), soweit klappt es tadellos.
    Nun meine Frage:
    Ich muss immer eine PDF anklicken damit diese angezeigt wird, ist es möglich das automatisch die erste PDF angezeigt wird?

    VB.NET-Quellcode

    1. ​Private Sub FilesLB_SelectedIndexChanged(sender As Object, e As EventArgs) Handles FilesLB.SelectedIndexChanged
    2. Try
    3. AxAcroPDF1.LoadFile("" + FilesLB.SelectedItem.ToString)
    4. Catch es As Exception
    5. MsgBox(es.Message)
    6. End Try
    7. End Sub
    ich bin ein Anfänger, bitte habt Verständnis für meine Unwissenheit und eventuelle schlecht gestellte Fragen ?(
    Ich bin mir nicht ganz sicher ob ich verstanden habe was du machen möchtest also du wählst in deiner ListBox eine pdf aus und diese pdf wird dan ohne button click geöffnet

    Wenn das so ist wäre doch die einfachste lösung mit einer If funktion

    If ListBox.SelectedItem <> "" Then

    Und dann lässt du das item anzeigen
    Somit umgehst du den part von Changed da sich deine code darauf beruft nur zu funktionieren wenn sich irgendwas in der listbox geändert hat
    @knuepel Probier's aus. Sag du's mir ;) Einfach beim fullen der Listbox ls letztes wie bigbase beschrieben hat das erste Item in den Viewer laden.

    @bigbase If-Verzweigung ^^
    Und SelectedItem ist afaik kein String, Strict On!
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais

    knuepel schrieb:

    ist es möglich das automatisch die erste PDF angezeigt wird?
    Klar, Du selektierst das Item 0 in der Prozedur, in der Du die ListBox befüllst:

    VB.NET-Quellcode

    1. FilesLB.SelectedIndex = 0
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn ich hier auch noch schnell einfügen darf:
    Erstell dir eine Instanz einer BindingSource, deren DataSource Property weißt du eine Liste zu, in welcher du Objekte hinterlegt hast, die zum Einen den Namen und zum Anderen den Pfad zur PDF beinhalten. Dann kannst du im CurrentItemChanged Event der BindingSource auf die Current Property der BindingSource zugreifen, dir das Resultat in deinen Typen casten und einen entsprechenden Prozess von Adobe Reader starten, welche die PDF aufmacht. Hier mal ein Beispiel Code:

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.IO
    3. Imports System.Linq
    4. Imports System.Collections.Generic
    5. Public Class Form1
    6. Private bs As BindingSource
    7. Private pdfList As List(Of PdfListEntry)
    8. Public Sub New()
    9. InitializeComponent()
    10. End Sub
    11. Private Sub btnLoadPdfs_Click(sender As Object, e As EventArgs) Handles btnLoadPdfs.Click
    12. Dim pdfFiles = Directory.EnumerateFiles(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\PDF", "*.pdf").ToList()
    13. Me.pdfList = pdfFiles.Select(Function(entry) New PdfListEntry() With {.Path = entry, .Name = entry.Split("\"c).Last()}).ToList()
    14. Me.bs = New BindingSource()
    15. Me.bs.DataSource = Me.pdfList
    16. AddHandler Me.bs.CurrentItemChanged, AddressOf bs_CurrentItemChanged
    17. Me.lbPdfs.DataSource = Me.bs
    18. Me.lbPdfs.DisplayMember = "Name"
    19. End Sub
    20. Private Sub bs_CurrentItemChanged(sender As Object, e As EventArgs)
    21. Me.lblSelectedPdf.Text = CType(Me.bs.Current, PdfListEntry).Name
    22. End Sub
    23. End Class
    24. Public Class PdfListEntry
    25. Public Property Name As String
    26. Public Property Path As String
    27. End Class


    Vorteile: Du bist auf jeden Fall typensicher und brauchst dich nicht um .ToString() und so kümmern!
    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    hihi - mit pdfListEntry hast du gewisser massen das Rad neu erfunden - nämlich eine Art FileInfo.
    Probierma diesen:

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.IO
    3. Imports System.Linq
    4. Imports System.Collections.Generic
    5. Imports System.ComponentModel
    6. 'lbPdfs As Listbox, lblSelectedPdf As Label, btnLoadPdfs As Button
    7. Public Class Form1
    8. Private bs As New BindingSource
    9. Private pdfList As New BindingList(Of FileInfo)
    10. Public Sub New()
    11. InitializeComponent()
    12. 'Initialisierungen nur einmal (initial halt) ausführen - niemals in Button_Klicks!
    13. bs.DataSource=pdfList
    14. Me.lbPdfs.DataSource = Me.bs
    15. Me.lbPdfs.DisplayMember = "Name"
    16. lblSelectedPdf.DataBindings.Add("Text", bs, "Name") ' bindet Label.Text an FileInfo.Name
    17. End Sub
    18. Private Sub btnLoadPdfs_Click(sender As Object, e As EventArgs) Handles btnLoadPdfs.Click
    19. pdfList.Clear()
    20. For Each fi In New DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\PDF").EnumerateFiles("*.pdf")
    21. pdfList.Add(fi)
    22. Next
    23. End Sub
    24. End Class
    Das verwendet einfach das FileInfo, wasses schon gibt

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „ErfinderDesRades“ ()