Problem mit intelisense

  • VB.NET

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

    Problem mit intelisense

    hallo liebe community,
    ich habe ein Problem mit meiner intelisense.
    ich habe die inelisense mit einer Listbox gemacht, und wenn man Enter drückt soll an der stelle wo der Cursor ist der Text eingefügt werden.
    wie mache ich das? mein code:

    VB.NET-Quellcode

    1. Private Sub ListBox1_KeyPress(ByVal sender As Object, _
    2. ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ListBox1.KeyPress
    3. ' Wurde die Entertaste in der ListBox gedrückt?
    4. If Asc(e.KeyChar) = Keys.Enter Then
    5. With SyntaxRtb1
    6. Dim strTag As String = ListBox1.SelectedItem
    7. ' Auswerten des Eintrages der ListBox und
    8. ' Umwandlung in den entsprechenden Wert der
    9. ' in die RTB eingefügt werden soll
    10. Select Case strTag
    11. Case strTag
    12. strTag = ListBox1.SelectedItem.ToString
    13. Case "br"
    14. strTag = "Br />"
    15. Case Else
    16. strTag = ""
    17. End Select
    18. ' Das "Steuerzeichen" # ersetzen durch einen NullString
    19. .Text = Replace(.Text, "#", vbNullString) & strTag
    20. ' wo soll der Cursor nach dem Einfügen in der RTB stehen?
    21. .SelectionStart = .TextLength
    22. ' Listbox wieder auf den ersten Eintrag setzen
    23. ' und ausblenden
    24. ListBox1.SelectedItem = 0
    25. ListBox1.Visible = False
    26. ' Focus wieder auf RTB setzen
    27. .Focus()
    28. End With
    29. End If
    30. End Sub


    ich weiß das man bei: .SelectionStart was anderes einsetzten muss nur was weiß ich nicht?

    könntet ihr mir dahelfen?

    vielen Dank
    filmee24
    Was ist genau dein Problem?
    so ungefähr kannst du den neuen Text in Text der Rtb einfügen:

    VB.NET-Quellcode

    1. RichTextBox1.Text = RichTextBox1.Text.Substring(0, RichTextBox1.SelectionStart) & ListBox1.SelectedItem & RichTextBox1.Substring(RichTextBox1.SelectionStart + 1, RichTextBox1.Text.Length - (RichTextBox1.SelectionStart + 1))

    Oder ist dein problem, dass SelectionStart nachdem die ListBox den Focus erhalten hat, eventuell nicht mehr gesetzt ist?
    Dann speicher vorher diesen Indexwert in ner extra Variable und setzte nach dem Auswählen in der ListBox den Cursor wieder anhand der Variable.
    1. Nimm das KeyDown-Event, da kannst Du gleich angeben, ob dann die Taste ignoriert werden soll.
    2.
    If Asc(e.KeyChar) = Keys.Enter Then
    '==>
    If e.KeyCode = Keys.Enter Then

    3. Wo ist denn der Cursor gelandet?
    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!
    Mach mal

    VB.NET-Quellcode

    1. .SelectionStart = .TextLength - 1
    wegen der Null-Basierung
    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!

    filmee24 schrieb:

    jetzt wird der text ans ende hinzugefügt

    Genau da haben wir doch den Cursor hingesetzt.
    Was nun? :S
    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!