| |
VB.NET - Ein- und UmsteigerRe: TextBox - Markierung von Text per Maus verhindern | | | Autor: keco | Datum: 25.03.10 16:12 |
| Eine TextBox verfügt nicht über die Funktionalität einzelne Stellen des Textes hervorzuheben. Ansonsten sollte lediglich der Hintergrund eines bestimmten Teil des Textes geändert werden. Selbst wenn der Text andersfarbig wäre würde es nicht die Markierung mittels Maus verhindern. | |
TextBox - Markierung von Text per Maus verhindern | | | Autor: keco | Datum: 24.03.10 20:26 |
| Hallo,
ist es möglich die Textmarkierung innerhalb einer TextBox zu verhindern? Bei mir soll nur bestimmter Text per Code markiert werden. Ist dieser markiert, dann soll durch ein Mausklick + Bewegen der Maus kein anderer Text markiert werden (die per Code gesetzte Markierung soll erhalten bleiben). Ist sowas möglich? Lediglich Strg+A soll ermöglicht werden (bzw. über das Kontextmenü). | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: Manfred X | Datum: 24.03.10 21:50 |
| Hallo!
Unverbindlicher Hinweis:
Im RichTextBox-Control gibt es das SelectionChanged-Ereignis.
Wird es ausgelöst, kann man die ursprüngliche Auswahl durch
Zurücksetzen von Selectionstart/Selectionlength in der
Ereignisroutine wieder herstellen.
Interessant könnte auch die SelectionProtected-Eigenschaft
dieses Controls und das zugehörige Ereignis (Protected) sein.
(Ich habe allerdings bisher nichts damit gemacht.)
MfG
Manfred
Beitrag wurde zuletzt am 24.03.10 um 21:54:52 editiert. | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: keco | Datum: 25.03.10 05:22 |
| Das habe ich auch festgestellt. Zur Ernüchterung leider auch, dass es diese Ereignisse bei der TextBox nicht gibt. Aber genau dieses Control brauche ich; die RTB ist ungeeignet. | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: VB.NET2005 | Datum: 25.03.10 15:52 |
| Kannst du in einem Timer nicht diesen Code schreiben:
If TextBox1.SelectionLength > 0 _
Then
TextBox1.Select(0, 0) 'Hier deine gewünschten Werte
End If
Beitrag wurde zuletzt am 25.03.10 um 15:53:10 editiert. | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: keco | Datum: 25.03.10 16:08 |
| An sich möglich, aber der Teil, der per Code markiert wird wird erst berechnet. Da ich das Interval relativ niedrig setzen müsste um ständiges flackern des Markieren und Demarkieren zu verhindern wird die Funktion zum berechnen des zu markierenden Teils zu oft aufgerufen. Dadurch flackert der gesamte Text in der TextBox.
Das sieht insgesamt ziemlich unschön aus. Gibt es da nichts per API oder dergleichen? | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: VB.NET2005 | Datum: 25.03.10 16:10 |
| Muss es denn unbedingt eine Markierung sein? Geht roter Text etc. nicht? | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: VB.NET2005 | Datum: 25.03.10 16:16 |
| Du könntest aufpassen, dass die Maus der Textbox nicht zu nahe kommt und den Mauszeiger dann umsetzen. Zum navigieren kannst du ja Buttons verwenden. | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: keco | Datum: 25.03.10 16:24 |
| Das finde ich für den Anwender unzumutbar. Ich fürchte, der wird Panik bekommen, wenn die Maus einfach nicht auf das Steuerelement geht. Das Steuerelement sollte wenigstens mit der Tastatur bedienbar sein.
Scheinbar gibt es keine passenden Möglichkeiten, also habe ich es so gemacht, dass man zwar Text markieren kann, aber sobald die Maus losgelassen wird nur den entsprechenden Teil wieder zu markieren.+
Also ähnlich deiner Idee mit dem Timer. Das sieht dann so aus:
Protected Overrides Sub OnMouseUp(ByVal mevent As _
System.Windows.Forms.MouseEventArgs)
Dim selStart As Integer = GetFirstIndexOfPart()
Dim selLength As Integer = GetLengthOfPart()
If Me.SelectionStart <> selStart Then Me.SelectionStart = selStart
If Me.SelectionLength <> selLength Then Me.SelectionLength = selLength
MyBase.OnMouseUp(mevent)
End Sub Das ist dann vielleicht auch für den Anwender noch zu fassen. Spätestens, wenn man es in der Hilfe schreibt, wieso und warum.
Vielen Dank aber, dass ihr euch Gedanken gemacht habt.
Beitrag wurde zuletzt am 25.03.10 um 16:24:33 editiert. | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: Manfred X | Datum: 25.03.10 17:00 |
| Hallo!
Statt "Markieren" wäre es ja vielleicht möglich,
den relevanten Text-Abschnitt durch Großschreibung
und das temporäre Einfügen einer Umrandung
(durch Zeichen) hervorzuheben. | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: keco | Datum: 25.03.10 17:03 |
| In der TextBox stehen verschiedene Werte, die der Anwender über die Tastatur verändern kann. Dabei würde es zu Unklarheiten führen, wenn beispielsweise 2 Werte markiert sind und dann Eingaben über die Tastatur erfolgen. Um das zu vermeiden sollen nur die entsprechenden Werte markiert werden dürfen oder eben der gesamte Text mittels Strg+A bzw. Kontextmenü. | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: keco | Datum: 25.03.10 17:05 |
| Das wäre auch eine schöne Idee, würde etwas mehr gestalterische Möglichkeiten schaffen. Bleibt dennoch das Problem zum verhindern des Markieren des Textes. Es würde dabei einfach einen unklaren Eindruck für den Anwender schaffen (denke ich). | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: Manfred X | Datum: 25.03.10 17:15 |
| Hallo!
Das hört sich für mich nach einer Liste an,
nicht nach einem Text: Werte markieren und ändern. | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: keco | Datum: 25.03.10 17:17 |
| Es soll aber keine Liste werden. Es ist einfach ein Text mit syntaktisch und logisch zueinander gehörenden Werten. Sowohl Text als auch Zahlen, die eben geändert werden sollen/können. | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: Manfred X | Datum: 25.03.10 17:20 |
| Ein Beispiel wäre schön ....
(Ich verstehe immer weniger, was Du machst.) | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: keco | Datum: 25.03.10 17:31 |
| Ein Beispiel, hm. Beispielsweise kann man bei einem Messgerät X und Y-Werte als Auslenkung eintragen. Dazu eine Beschreibung für die auszudruckenden Werte. Diese müssen in einem bestimmten Format vorliegen. Etwa: (10; 20) - Beschreibung
Dabei soll es möglich sein die 10 zu markieren, die 20 zu markieren oder "Beschreibung" zu markieren (durch einen Klick in den Text wird automatisch der entsprechende Bereich markiert). Durch Tastatureingaben ist eine Änderung möglich. Klar, man könnte dafür eine MaskedTextBox etc. verwenden, aber dann kann man nur eine begrenzte Anzahl Zeichen zulassen bei den Ziffern. Es kann auch sein, dass ein Komma bei den Zahlen vorkommt. Oder ein Minus. Oder die Beschreibung ist etwas länger, oder kürzer. Die MaskedTextBox stellt diese Funktionen nicht bereit. Die Markierung der entsprechenden Stelle etc. ist dabei gewohnt. | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: Manfred X | Datum: 25.03.10 17:40 |
| Gibt es einen Grund, weshalb das innerhalb des
Textbox-Controls passieren muss?
Du könntest bei einem Mausclick die
entsprechenden Angaben in ein Dialogformular
eintragen, dass gezielt abfragt, z.B. bei
einem Click auf die erste Zahl:
zugehörige Beschreibung
Aktuell eingetragene x-Auslenkung
Neuer Wert (Bereich Min <-> Max)?
Der vom Benutzer eingegebene Wert kann
dann per Code in die Textbox an der
angeclickten Position übernommen werden. | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: keco | Datum: 25.03.10 17:46 |
| Zitat: | | Gibt es einen Grund, weshalb das innerhalb des Textbox-Controls passieren muss? | |
Naja, vermutlich, weil es schon so vom Anwender gewohnt ist. Sonst würde ich ja diesen Aufriss nicht machen. Es ist nun einmal so gefordert. Damit erklärt sich eigentlich der Rest.
Bisher waren andere Lösungsversuche, wie z.B. UserControl mit mehreren TextBoxen auch nicht das Wahre. | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: Manfred X | Datum: 25.03.10 17:57 |
| Ich meine, mich zu erinnern, dass man die
Maus vorübergehend disabeln kann, (will
aber keine falschen Gerüchte verbreiten.) | |
Re: TextBox - Markierung von Text per Maus verhindern | | | Autor: keco | Datum: 25.03.10 18:06 |
| Aber wann sollte ich die Maus wieder deaktivieren (falls möglich)? Wäre auch keine praktikable Lösung. Ich denke ich werde es wohl so lassen, wie ich es jetzt habe. Danke für die Hilfe. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|