Wie schreibe ich in eine Listbox EINEN Eintrag Kursiv?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von SystemUnknow.

    Wie schreibe ich in eine Listbox EINEN Eintrag Kursiv?

    Hallo Leute.

    Mein Programm soll in eine Listbox kursiv hineinschreiben, dass der Datensatz nicht vorhanden ist, die anderen Einträge in der Box sollen jedoch normal bleiben.
    Wie bekomme ich das hin?

    Dankeschöön!

    VB.NET-Quellcode

    1. Private Sub cmdMediumIDsearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdMediumIDsearch.Click
    2. cmd.CommandText = "select * from Bestand where DatenNr like '" & txtMediumIDsearch.Text & "'"
    3. Dim i As Integer
    4. Try
    5. con.Open()
    6. reader = cmd.ExecuteReader()
    7. 'lstMedium.Items.Clear()
    8. Do While reader.Read()
    9. lstMedium.Items.Add(
    10. "ID: " &
    11. reader("DatenNr") & " # " &
    12. reader("Titel") & " # " &
    13. reader("Autor") & " # ISBN: " &
    14. reader("ISBN") & " # " &
    15. reader("Typ"))
    16. MedID.Add(reader("DatenNr"))
    17. i += 1
    18. Loop
    19. reader.Close()
    20. con.Close()
    21. If i = 0 Then
    22. 'Hier soll dann ein Eintrag der Listbox lstMedium hinzugefügt werden,
    23. 'dass es das Buch nicht gibt, und er soll diesen Eintrag, und auch nur diesen , kursiv schreiben
    24. End If
    25. Catch ex As Exception
    26. MessageBox.Show(ex.Message)
    27. End Try
    28. txtMediumIDsearch.Clear()
    29. End Sub
    tja, das geht leider nicht so einfach.
    du musst dein Control auf "ownerdraw" stellen, und dannach manuell zeichnen.

    am besten suchst du nach "Farbige Listbox Einträge" (oder so etwas in der Art), und kannst dann das entsprechende Beispiel verwenden um dich ein wenig in GDI+ einzuarbeiten.

    (Bin mir sicher das ich da mal ein Beispiel gesehen habe, weil ein User jeden zweiten Listboxeintrag Farbig haben wollte. Da das in etwa mit deiner Frage hinkommt suchst du desswegen am besten mal dannach)
    Sollte deine If-Abfrage nicht IN die Schleife?!

    Außerdem:
    Wenn das immer bei i = 0 passieren soll, dann kann man (vorausgesetzt, das mit dem Kursiv geht überhaupt)
    vor der Schleife die Schriftdingsändern auf Kursiv und nachdem die den ersten Eintrag gemacht hast, dann
    einfach auf die normalen Schrifteinstellungen stellen.
    OB das aber überhaupt geht, weiß ich nicht. Kanns auch erst zuhause prüfen.
    Sollte deine If-Abfrage nicht IN die Schleife?!

    Außerdem:
    Wenn das immer bei i = 0 passieren soll, dann kann man (vorausgesetzt, das mit dem Kursiv geht überhaupt)
    vor der Schleife die Schriftdingsändern auf Kursiv und nachdem die den ersten Eintrag gemacht hast, dann
    einfach auf die normalen Schrifteinstellungen stellen.
    OB das aber überhaupt geht, weiß ich nicht. Kanns auch erst zuhause prüfen.


    Nein das funktioniert nicht. bei Windows Forms Steuerelementen bezieht sich "Font" immer aufs GANZE Steuerelement, bedeutet du hast keine Chance einzelne Einträge anders zu gestallten.

    vieleicht tuts bei dir auch einfach nen Listview..... [1][2]
    Nimm ggf. DataGridView, da kannst Du eine einzelne Zelle nach Belieben formatieren.
    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!

    Fritz-albert schrieb:

    Nein das funktioniert nicht. bei Windows Forms Steuerelementen bezieht sich "Font" immer aufs GANZE Steuerelement,

    Wäre in diesem Fall aber kein Problem, denn bei keine Einträge will er ja nur einen Eintrag anzeigen, nämlich, dass keine Einträge da sind. Ja, das kann man auch dadurch regeln, dass man der Listbox insgesamt einen kursiven Font zuweist.

    Aber wie gesagt: ich fänds eiglich sogar besser im Falle keines Treffers ein Label anzuzeigen stattt der Listbox.