richtextbox eigene befehle

  • VB.NET

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

    richtextbox eigene befehle

    moin leute
    und zwar folgendes
    sorry bin leider anfänger in vb...

    in der richtextbox gibt es ja den befehl bzw sub wenn man in der richtextbox auf ein link klickt das dan was passiert...
    wie kann ich aber auch eigene befehle eige sub... kp wie ich das nennen soll... erstellen?
    also das zb sowas in der richtextbox steht
    hallo klick mich :msgbox-ich bin eine msgbox:
    im chat steht und wenn man aufklickt soll eine msgbox mit dem inhalt "ich bin eine msgbox" kommen...
    ich hoffe ihr wisst was ich meine ;)

    für eine url/links in der richtextbox is ja schon alles vorbereitet aber nich für eigene befehle :(
    Würde es nicht zunächst genügen, das Wort, das sich unter der Maus befindet, zu identifizieren?
    Machst Du eine Form, Label1, RichTextBox1 und folgenden Inhalt:
    RichTextBox mit Worterkennung unter der Maus

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    4. Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
    5. End Function
    6. Private Const EM_CHARFROMPOS& = &HD7
    7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    8. RichTextBox1.Text = "Dies ist mein Rich-Text(bla)"
    9. End Sub
    10. Private Sub RichTextBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles RichTextBox1.MouseMove
    11. Dim Text As String
    12. Text = GetWord(e.X, e.Y)
    13. Label1.Text = Text
    14. End Sub
    15. Private Sub RichTextBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles RichTextBox1.MouseDown
    16. Dim Text As String
    17. Text = GetWord(e.X, e.Y)
    18. Label1.Text = Text
    19. End Sub
    20. Private Function GetWord(ByVal X As Integer, ByVal Y As Integer) As String
    21. Dim POS, P1, P2 As Integer
    22. Dim chars As Char
    23. Dim feld() As Integer = {X, Y}
    24. ' Position des Textzeichens unter dem Mauszeiger auslesen
    25. Dim WriteBuffer As IntPtr = Marshal.AllocHGlobal(8)
    26. Marshal.Copy(feld, 0, WriteBuffer, 2)
    27. POS = SendMessage(RichTextBox1.Handle, EM_CHARFROMPOS, IntPtr.Zero, WriteBuffer)
    28. Marshal.FreeHGlobal(WriteBuffer)
    29. If POS < 0 OrElse POS >= RichTextBox1.Text.Length Then
    30. Return ""
    31. End If
    32. ' Wortanfang finden
    33. For P1 = POS To 0 Step -1
    34. chars = CChar(RichTextBox1.Text.Substring(P1, 1))
    35. If Not CheckChar(chars) Then
    36. Exit For
    37. End If
    38. Next P1
    39. P1 = P1 + 1
    40. ' Wortende finden
    41. For P2 = POS To RichTextBox1.Text.Length - 1
    42. chars = CChar(RichTextBox1.Text.Substring(P2, 1))
    43. If Not CheckChar(chars) Then
    44. Exit For
    45. End If
    46. Next P2
    47. P2 = P2 - 1
    48. If P1 < P2 Then
    49. Return RichTextBox1.Text.Substring(P1, P2 - P1 + 1)
    50. End If
    51. Return ""
    52. End Function
    53. Private Function CheckChar(ByVal Chars As Char) As Boolean
    54. ' Testen auf Trennzeichen eines Wortes
    55. If ((Chars >= "0"c AndAlso Chars <= "9"c) OrElse _
    56. (Chars >= "a"c AndAlso Chars <= "z"c) OrElse _
    57. (Chars >= "A"c AndAlso Chars <= "Z"c) OrElse _
    58. (InStr("äöüÄÖÜß", Chars) <> 0)) Then
    59. Return True
    60. End If
    61. Return False
    62. End Function
    63. End Class
    Wenn Du dann "MessageBox" erkennst, kannste z.B. eine werfen. :D
    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!
    nein das glaube ich ehr nicht das das reichen würde...
    wenn man ja "www.google.de" in die richtextbox schreibt dan wird es ja blau... genau das selbe will ich eben auch nur eben nicht mit einer url sondern mit etwas anderem...
    ich kenne das von anderen programmen her da is das ganz einfach gemacht...

    MVN050 schrieb:

    nein das glaube ich ehr nicht das das reichen würde...
    Dann mach Dir z.B. ein Dictionary, in dem von Dir unterstützte Worte und Wortgruppen vorkommen und führe bei jedem Text-Change in der Umgebung der geänderten Stelle (Cursor-Position) ein Highlighting durch.
    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!