TextBox - TextCursor ausblenden

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    TextBox - TextCursor ausblenden

    Hi,

    ich habe eine Form, die nur eine readonly Textbox enthält und sonst keine weiteren Controls.

    Die Tab-Eigenschaft habe ich ausgeschaltet ... und so wird die Textbox ohne Cursor und Selection angezeigt.

    Wenn ich die Form minimiere und dann wieder aufblende, dann erhält die Textbox aber den Focus und der Text wird selektiert, d.h. blau unterlegt angezeigt.

    Die Markierung kriege ich wieder weg.

    VB.NET-Quellcode

    1. txtDisplay.SelectionStart() = 0


    Aber jetzt erscheint der blinkende TextCursor.

    Den will ich aber nicht haben ! Wie kann ich das denn ausblenden. Im Netz habe ich dazu nur so üble Tricks gefunden, wie einen Button außerhalb der sichtbaren Form zu deklarieren und den zu fokussieren. Erstens kriege ich das nicht hin .... und zweitens sollte es doch bessere Lösungen geben!

    LG
    Peter

    Peter329 schrieb:

    readonly Textbox
    (Rich-) TextBox geht da nicht, die sind für solch gemacht.
    Nimm ein Label und gib dem einen schmucken Border, ein Label ist nicht anklickbar.
    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!
    Danke für die Ratschläge.

    Leider hilft mir das nicht weiter. Denn die Textbox soll anklickbar sein! Mit Linksklick wird die Anwendung minimiert, mit Rechtsklick wird ein eigenes Eigenschaftsfenster aufgeblendet.

    Peter329 schrieb:

    Denn die Textbox soll anklickbar sein!
    Kannst Du bitte mal eine präzise und vollständige Aufgaben- bzw. Problembeschreibung posten?
    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!
    Na gut ... ich poste gern meine Problembeschreibung ...

    Ich gebe die aktuelle Uhrzeit in einem Textfeld sekundenweise aus.

    Die Anzeige erfolgt mit FormBoderStyle = None - es wird also nur das Textfeld angezeigt.

    Mit "Mouse Linksklick" wird die Anwendung minimiert und der Timer angehalten. Durch Klick auf das Symbol in der Taskleiste wird die Anwendung wieder aufgeblendet und der Timer mit dem Event "Activated" neu gestarted.

    Mit "Mouse Rechtsklick" wird ein "Kontext Menue" aufgeblendet für bestimmte Sonderfunktionen (andere Timezone wählen, Timelag einstellen, Stoppuhr starten etc.)

    Eine "normale" Uhr ist für meine Anforderungen leider nicht genug!

    Jetzt klar, was ich treibe? :)

    Die Anwendung läuft hervorragend. Nur, dass nach dem Minimieren und neu aufblenden, der blinkende Text Cursor erscheint ist nervig!

    Eine Umgehung des Problems habe ich natürlich parat - Entweder ich lebe mit dem blinkenden Text Cursor, was ich als Kapitulation vor dem Problem betrachte. Oder statt die Anwendung zu minimieren beende ich sie einfach, um sie dann später einfach neu zu starten. Das ist aber leider nicht ganz so unproblematisch, was an den besonderen Arbeitsbedingungen liegt, die ich in diesem Umfeld habe.

    LG
    Peter

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

    Peter329 schrieb:

    der blinkende Text Cursor erscheint ist nervig!
    Dann nimm ein Label.
    Weise der Form und dem Label dasselbe KontextMenu zu,
    weise der Form und dem Label denselben Links-Klick-Handler zu
    und 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!
    okie dokie ... die Sache mit dem Label klappt.

    Gut, das ist halt keine allgemeingültige Lösung für das Problem diesen blöden blinkenden Textcursor weg zu bekommen ... aber der Zweck heiligt die Mittel.

    Danke an die Ratgeber!

    LG
    Peter
    Jetzt habe ich doch noch eine Frage ...

    Wie erreiche ich denn, dass das Label ZENTRIERT in der Form angezeigt wird?

    Die Form hat die SIZE=(120; 31), FORMBORDERSTYLE=None

    Ich habe versucht das Label "von Hand" zu positionieren:

    SIZE=(96;25)
    LOCATION=(27;9)

    DOCK=Fill / None

    Aber irgendwie ist das alles andere als zentriert! Kann man das irgendwie professioneller angehen? :)

    LG
    Peter

    Peter329 schrieb:

    angehen
    So:

    VB.NET-Quellcode

    1. Label1.Left = (Me.ClientSize.Width - Label1.Width) \ 2
    2. Label1.Top = (Me.ClientSize.Height - Label1.Height) \ 2
    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:

    CenterCenter
    Hab ich auch gerade ausprobiert.
    das Ding heißt

    VB.NET-Quellcode

    1. TextAlignment.MiddleCenter
    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!