Textbox Auswahl aufheben

  • VB.NET

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

    Textbox Auswahl aufheben

    Hi,

    Ich ändere die Foreground Farbe meiner Textbox durch Doppelclick.

    Das klappt auch hervorragend. Nur wird dabei der Inhalt der Textbox automatisch markiert.

    Wie kann ich die Markierung wieder aufheben. Oder noch besser: kann ich verhindern, dass eine Textbox überhaupt markiert wird.

    LG
    Peter

    VB.NET-Quellcode

    1. TextBox1.SelectionLength = 0
    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!
    Wenn die Textbox wirklich zur Eingabe vorgesehen ist und nicht nur zur Anzeige, halte ich persönlich nur sehr wenig davon, das Standardverhalten von solchen Steuerelementen zweckzuentfremden. Der Doppelklick auf eine Textbox sieht nunmal vor, dass der darin enthaltene Text vollständig selektiert wird. Als Benutzer deines Programms würde ich wieder ein paar graue Haare mehr bekommen.

    Wenn aber die Textbox tatsächlich nur zum Anzeigen gedacht ist, solltest du ggf. darüber nachdenken, vllt. doch lieber ein Label dafür zu nehmen.

    Die Option die Textbox zu behalten und ihre Eigenschaften so einzustellen, dass sie keinerlei Eingaben annimmt ginge auch, halte ich aber für genauso schlecht, weil dieser Modus in der Regel dafür gedacht ist, dass dort aus dem Programm heraus Text eingetragen wird, den der Benutzer dann nach Selektieren dort herauskopieren kann, sofern gewünscht. Also auch hierbei erwartet man in der Regel dass der Doppelklick sich auf die Selektion auswirkt und nicht auf die Textfarbe.

    Aber am Ende isses deine Entscheidung, wollte das nur noch ergänzend anmerken, weil ich viel zu oft mit Programmen von irgendwelchen "VB-Programmierern" konfrontiert wurde, die dachten das Standardverhalten von Standardcontrols neu erfinden zu müssen.
    Weltherrschaft erlangen: 1%
    Ist dein Problem erledigt? -> Dann markiere das Thema bitte entsprechend.
    Waren Beiträge dieser Diskussion dabei hilfreich? -> Dann klick dort jeweils auf den Hilfreich-Button.
    Danke.
    @RFG

    Danke für deinen Rat. Ich hab ein Weilchen probieren müssen, bis es funktioniert hat.

    Das Ereignis Double Click setzt offensichtlich die Eigenschaft .SelectionLength neu! Deshalb muss man diese Eigenschaft in der DoubleClick Prozedur setzen und nicht etwa in der Definition des Feldes oder in der Load-Prozedur der Form.

    Auch nach dem Nullsetzen der .SelectionLength bleibt die Markierung erhalten. Die verschwindet erst nach Aufruf der Methode .Refresh.

    Das Coding sieht also wie folgt aus:

    VB.NET-Quellcode

    1. Private Sub Tb_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
    2. ...
    3. allTb(i, j).SelectionLength = 0
    4. Me.Refresh()
    5. End Sub


    @Arby
    Ein Label funktioniert hier nicht, weil die Felder eben im "Input Mode" als Eingabe genutzt werden sollen. Im "Output Mode" werden dann nur Ergebnisse angezeigt. Aber du hast schon recht damit, dass man Controls nicht neu erfinden soll!

    Danke an alle Ratgeber und

    LG
    Peter