Label Filtern

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Label Filtern

    Hallo ich hab mehrere Labels (lbl1 - lbl10)
    und eine Combobox

    Bei Auswahl (Combobox) Eintrag1

    werden die Labels gefüllt (lbl1.Text = "0000 - 10.0000") (lbl2.Text = "0000 - 11.0000") usw....

    jetzt möchte ich lbl2 ForeColor ändern, weil der wer (11) vorkommt


    die zahlen die davor und danach stehen sollen ignoriert werden.


    VB.NET-Quellcode

    1. If lbl1.Text = "**** - 11.****" Then
    2. lbl1.ForeColor = Color.Silver
    3. End If
    4. If lbl2.Text = "**** - 11.****" Then
    5. lbl2.ForeColor = Color.Silver
    6. End If
    7. '.......

    VB.NET-Quellcode

    1. If myStringValue.Contains(myMatch) Then
    2. '...
    3. Dim myRegEx As New RegEx("(11){1}")
    4. If myRegEx.IsMatch(myStringValue) Then


    Hinweis: myMatch ist der Wert den du suchen willst (11 z.B.)
    Hinweis: der namespace zum RegEx fehlt
    Hinweis: Die Regular Expression ist falsch

    Für alles weitere (welcher Namespace, wie ist ein RegEx aufgebaut): Google...
    Oder nimm dies:

    VB.NET-Quellcode

    1. For Each ctrl As Control In Me.Controls
    2. If TypeOf ctrl Is Label Then
    3. ctrl.Text = "lkjlkJ"
    4. End If
    5. Next
    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!
    das von dir ^^

    VB.NET-Quellcode

    1. Dim myStringValue As String
    2. myStringValue = lbl1.Text
    3. If myStringValue.Contains(myMatch) Then
    4. End If
    5. Dim myRegEx As New Regex("(11){1}")
    6. If myRegEx.IsMatch(myStringValue) Then
    7. lbl1.ForeColor = Color.Aqua
    8. End If

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Alex - AK“ ()

    OK, dann hast du aber immernoch nicht verstanden was passiert...

    ich habe zwei Wege aufgezeichnet, es zu überprüfen. Den ersten überprüfst du (Contains), und machst nichts. diese beiden zeilen kannst du rausschmeißen.

    VB.NET-Quellcode

    1. If myStringValue.Contains(myMatch) Then
    2. End If


    Der untere teil: Er sucht in deinem String, ob eine 30 vorkommt, und erlaubt, dass sie genau 1mal da steht (hintereinander / insgesamt, weiß ich gerade nicht mehr)

    Dass kannst du übrigens variabel festlegen.

    VB.NET-Quellcode

    1. "...{2,7}"

    Sagt, mindestens 2 mal, maximal 7 mal. Ansonsten schlägt es fehl... Tolle Sache, die viel möglich macht.

    Ansonsten ist dein RegEx nicht flexibel...

    VB.NET-Quellcode

    1. dim str as String = String.Format("({0}){{1}}", matchValue)
    2. dim regEx as new RegEx(str)


    so kannst du das gesucht einfach als Variable mitgeben und musst es nicht hardcodieren...

    Was genau funktioneir tnicht? Was passiert bzw. was passiert nicht?

    VB.NET-Quellcode

    1. 'Eintrag 1
    2. If cbx1.SelectedIndex = (0) Then
    3. lbl13.ForeColor = My.Settings.kooBC2
    4. End If
    5. 'Eintrag 2
    6. If cbx1.SelectedIndex = (1) Then
    7. lbl10.ForeColor = My.Settings.kooBC2
    8. End If



    das war von mir angepast,

    ich möchte das die farbe automatisch angepast wird




    "0000 - 10.0000" ohne farbe

    "0000 - 14.0000" ohne farbe

    "0000 - 11.0000" mit farbe


    usw 11, 12, 13, 19, 30, 50 in farbe

    disen wert filtern ("0000 - 11.0000") = (*_-_11._* ) und in dem entsprechendem label, ForeColor = Red

    VB.NET-Quellcode

    1. For Each ctrl In Me.Controls
    2. If TypeOf ctrl Is Label Then
    3. CheckColors(ctrl As Label)
    4. End If
    5. Next
    6. '....
    7. Private Sub CheckColors(ByRef ctrl As Label)
    8. Dim filter() As Integer = {11, 12, 13, 19, 30, 50}
    9. For Each val As Integer In filter
    10. If ctrl.Text.Contains(String.Format(" - {0}."), val.ToString))
    11. ctrl.ForeColor = Color.Red
    12. Exit For
    13. End If
    14. Next
    15. End Sub


    Dürfte Funktionieren, bin aber nicht sicher.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kagurame“ ()

    @ErfinderDesRades:
    Knapp daneben.
    Hier geht es um partiell colorierte Labels. Da hilft nur Paint.
    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!
    nanu - "partiell colorierte Labels"?

    Aber was hantiert ihr dann mit Label.ForeColor?

    Da könnter Label doch komplett vergessen, und ein eigenes Control schreiben.
    Oder Richtextbox nehmen.

    Mein Ansatz ist auch nicht nur "knapp daneben", sondern eine ganz annere Denkweise.
    Aber probiert man noch eine Weile weiter mit Labels und Zeugs ;)
    So isses. Ein partiell coloriertes Label ist ein UserControl.
    Und als solches natürlich bequem handhabbar.
    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!