RichtextBox jeweils ganze Zeile Markieren

  • VB.NET
  • .NET (FX) 4.0

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

    RichtextBox jeweils ganze Zeile Markieren

    Hallo,

    erstmal muss ich hallo sagen da dies mein erster Post ist , ich aber sehr viel hier lese.

    Ich mache gerade eine Umschulung zum Anwendungsentwickler und sitze fleißig im Pflichtpraktikum (mit 30).

    Ich habe eine kleine Anwendung geschrieben, in der eine Richtextbox als "Datensammler" dient. In die TxtBox kan man per Drag and Drop PDF´s einziehen und für jeden eintrag in der Box wird im array ein string zwischengespeichert, diese liste soll dann nacheinander an einen Drucker gesendet werden, funktioniert soweit auch ganz gut, nur habe ich ein kleines Problem zudem ich leider n icht besonders viel finde.

    In der TxtBox sind alle Tasten gesperrt bis auf die Backspace taste.

    Wenn nun der User in die RichTextBox klickt soll bitte die Ganze zeile Markiert werden und nicht der Cursor gesetzt werden um diese, wenn nötig KOMPLETT gelöscht wird.

    Für jede Antwort bin ich Dankbar ;)
    Ich sitze in dieser sekunde dran mit einer listbox, das doofe nur das die listbox nicht so eine tolle textChange Ereignis hat wie die Textbox, oder gibt es bei der listBox das auch unter einem anderen Namen?

    Also ich habe auf einem Button "DRucken" quasi die Anzahl der items angezeigt "3 Dateien Drucken" damit der zähler hochzählt brauche ich das indexChange Ereignis oder ähnliches, aber ich finde es nicht.

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

    ich wüsste auch nicht, dass Richtextbox eine textChange-Eigenschaft hätte.
    Es gibt ein TextChanged-Event, aber textChange ist nicht TextChanged (ja, die Compiler sind manchmal kleinlich mit Abschreibfehlern ;) ), und ein Event ist keine Eigenschaft.

    Und eine Listbox hat natürlich auch viele gute Eigenschaften und Events.
    Also wenn du erklärst, was du wirklich mit "textChange eigenschaft" meinst, und wozu du es benützst, kann man vlt. auch bei Listbox etwas finden, was dir ebenso nützlich ist.

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

    Blackn0va schrieb:

    das die listbox nicht so eine tolle textChange Ereignis hat wie die Textbox
    Was passiert denn in Deinem Programm bei diesem Event?
    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!
    Ich habs anders gelöst, und Zwar einen Timer, der bei Formload startet und alle 3 Sekunden die listBox zählt und ausgibt.


    Jetzt habe ich noch eine andere Frage.

    In der ListBox habe ich ein DragDrop Ereignis erzeugt das man PDF´s reinziehen kann, wie kann ich prüfen, ob es eine PDF ist, falls nein, Ignorieren.

    VB.NET-Quellcode

    1. Dim s() As String = e.Data.GetData("FileDrop", False)
    2. Dim i As Integer
    3. For i = 0 To s.Length - 1
    4. ListBox1.Items.Add(s(i))
    5. Next i

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

    Blackn0va schrieb:

    wie kann ich prüfen, ob es eine PDF ist
    So:

    VB.NET-Quellcode

    1. Dim s() As String = e.Data.GetData("FileDrop", False)
    2. For i = 0 To s.Length - 1
    3. If s(i).ToLower().EndsWith(".pdf") Then
    4. ListBox1.Items.Add(s(i))
    5. End If
    6. Next i
    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!
    Sehr Elegant

    vielen Dank !!



    Eine letzte Frage,

    ich hab das soweit, das er die Dokumente an den Drucker sendet, allerdings wenn der Drucker nicht erreicht wurde aus welchem grund auch immer , dann soll der Vorgang abgebrochen, das Programm jedoch nicht beendet werden, am besten alles auf null müll einsammeln und wieder zum anfang. NUR:
    versucht er, nachdem er den drucker nicht erreicht hat dennoch das Dokument zu senden.. ich weiß das es eine kleinigkeit hat, aber noch überflutet mich die masse an Code..

    VB.NET-Quellcode

    1. '** Deklaration eines Druckers im Lokalem netzwerk ***
    2. Dim s As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
    3. Dim retval As MsgBoxResult
    4. '*** MEssagebox mit einer returnValue ***
    5. retval = MessageBox.Show("Möchten Sie wirklich Drucken?", "Hinweis", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    6. '*** Wennn in der Messsagebox Ja geklickt wurde dann.... ***
    7. If retval = vbYes And cboDrucker.SelectedIndex > 0 And ListBox1.Items.Count > 0 Then
    8. '*** Timer für die prgBar starten ***
    9. Timer1.Start()
    10. '*** Wenn verbindung aktiv, dann Trennen ***
    11. If s.Connected = True Then
    12. '*** Trennen ***
    13. s.Disconnect(True)
    14. '*** Verbindung Trennen ***
    15. s.Close()
    16. End If
    17. '*** Wenn Index 0 gewählt dann Ignorieren, wennn index größer 0 Dann Drucken ***
    18. If cboDrucker.SelectedIndex = 0 Then
    19. ElseIf cboDrucker.SelectedIndex = 1 Then
    20. Try
    21. '*** RFP Backoffice ***
    22. s.Connect("IP VON DRUCKER 3", 9100)
    23. Catch ex As System.Net.Sockets.SocketException
    24. MessageBox.Show("Drucker nicht gefunden", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Information)
    25. '*** HIER AM BESTEN WIEDER AUF ANFANG ***
    26. End Try
    27. ElseIf cboDrucker.SelectedIndex = 2 Then
    28. Try
    29. '*** NY77 Backoffice ***
    30. s.Connect("IP VON DRUCKER 2", 9100)
    31. Catch ex As System.Net.Sockets.SocketException
    32. MessageBox.Show("Drucker nicht gefunden", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Information)
    33. '*** HIER AM BESTEN WIEDER AUF ANFANG ***
    34. End Try
    35. ElseIf cboDrucker.SelectedIndex = 3 Then
    36. Try
    37. '*** HPF Backoffice ***
    38. s.Connect("IP VON DRUCKER 1", 9100)
    39. Catch ex As System.Net.Sockets.SocketException
    40. MessageBox.Show("Drucker nicht gefunden", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Information)
    41. End Try
    42. End If
    43. '*** Für jede Zeile in der ListBox wird ein String an den Drucker gesendeT ***
    44. For Each zeile As String In ListBox1.Items
    45. Try
    46. '*** Senden e ines Srings an den Drucker ****
    47. s.SendFile(zeile)
    48. Catch ex As System.NotSupportedException
    49. End Try
    50. Next
    51. '** Textfeld nach abschiocken an den Drucker wieder leeren ***
    52. ListBox1.Items.Clear()
    53. Else
    54. MessageBox.Show("Bitte Wählen Sie einen Drucker aus und fügen Sie eine PDF hinzu.", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Information)
    55. End If
    56. End Sub

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Blackn0va“ ()

    dein Code hat 30% üflüssige Leerzeilen, ein End Sub - aber den Methoden-Kopf haste abgeschnitten - was soll man mit sowas anfangen?
    Jo - und die masse an code überflutet mich auch. Kannst du ieine ZeilenNr benennen, die iwas tut, was sie nicht tun sollte? Dann wüsste ich wenigstens ungefähr, wo ich hingucken soll.

    Blackn0va schrieb:

    dennoch das Dokument zu senden.
    Du musst natürlich die Prozedur verlassen, wenn der Drucker nicht antwortet:

    VB.NET-Quellcode

    1. '*** Wenn verbindung aktiv, dann Trennen ***
    2. If s.Connected = False Then
    3. s.Close()
    4. Return
    5. End If
    6. '*** Trennen ***
    7. s.Disconnect(True)
    8. '*** Verbindung Trennen ***
    9. s.Close()

    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!

    ErfinderDesRades schrieb:

    dein Code hat 30% üflüssige Leerzeilen, ein End Sub - aber den Methoden-Kopf haste abgeschnitten - was soll man mit sowas anfangen?
    Jo - und die masse an code überflutet mich auch. Kannst du ieine ZeilenNr benennen, die iwas tut, was sie nicht tun sollte? Dann wüsste ich wenigstens ungefähr, wo ich hingucken soll.


    VB.NET-Quellcode

    1. Private Sub cmdDrucken_Click(sender As Object, e As EventArgs) Handles cmdDrucken.Click
    2. End Sub
    3. Sie sind Markiert : ) mit :
    4. '*** HIER AM BESTEN WIEDER AUF ANFANG ***


    Ich kommentiere eben gerne :)
    versuche ich gleich mal @RodFromGermany , vielen Dank :)

    Also ich habe es nun versucht, aber er gibt mir die Meldung aus das der Drucker nicht gefunden wurde, aber er sendet es dennoch an den drucker.

    VB.NET-Quellcode

    1. ElseIf cboDrucker.SelectedIndex = 3 Then
    2. Try
    3. '*** HPF Backoffice ***
    4. s.Connect("IP DRUCKER 3", 9100)
    5. If s.Connected = False Then
    6. s.Close()
    7. Return
    8. End If
    9. Catch ex As System.Net.Sockets.SocketException
    10. MessageBox.Show("Drucker nicht gefunden", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Information)
    11. End Try
    12. End If


    wäre das ohne dem Try Block nicht derselbe effekt?

    VB.NET-Quellcode

    1. ElseIf cboDrucker.SelectedIndex = 3 Then
    2. '*** HPF Backoffice ***
    3. s.Connect("IP VON DRUCKER 3", 9100)
    4. If s.Connected = False Then
    5. s.Close()
    6. Return
    7. End If
    8. End If
    Also so?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Blackn0va“ ()

    Ich glaube das ErfinderDesRades eher die "leeren" Leerzeichen meint. Versuch mal diese zu entfernen, dann sieht dein Code auch mit all den Kommentaren viel schöner und übersichtlicher aus, weil alles direkt zu erkennen ist. Zu viel scrollen versuch ich immer zu verhindern.

    Und nein, ich glaube nicht das es den selben Effekt ohne dem Try Block hätte. Denn wenn dass hier nicht klappt:

    VB.NET-Quellcode

    1. ​s.Connect("IP VON DRUCKER 3", 9100)

    wird das Programm nichts zurückgeben und du weißt nicht, was das Problem ist. Oder es stürzt ab(?). Ich weiß ja nicht, ob s.Connect bereits bei einem Fehler etwas in der Art zurückgibt. Aber du kannst ja mal versuchen, eine falsche IP anzugeben oder einen falschen Port.
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.

    Blackn0va schrieb:

    aber er sendet es dennoch an den drucker.
    Dann musst Du mal debuggen mit Drucker an und Drucker aus und im Code sehen, was da passiert.
    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!

    Blackn0va schrieb:

    Kann Geschlossen werden.
    musste alleine machen.
    Oben rechts neben dem Titel ist ein kleines abgerundetes Quadrat, da doppelklickst Du drauf. Feddich.
    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!