Ändern der cursor-position in textbox in C# - Windows
Ich habe eine winform-die Last MDI-child-Windows forms. Alle textboxs in Kind winform immer cursor bleiben auf der linken Seite und ich kann nicht an eine andere position verschieben, außer ich wähle den gesamten text und alle re-input. Wie kann ich diese aktivieren, um den cursor zu bleiben, kann zu jeder position mit der Maus?
Für jedes Textfeld versuchen SelectionStart = i und SelectionLength = 0, wobei i die gewünschte cursor-position.
Wie kann ich einstellen, dass für alle textboxs? Ursache' ich habe eine Menge von textboxs 🙁
Eine Schleife verwenden 🙂 - Formulare haben die Eigenschaft Controls, die ein ControlCollection. Sie iterieren über Elemente mit
Es bedeutet, es gibt keine Möglichkeit, diese. Ex eine Eigenschaft von win form? Wir müssen dies manuell tun 🙁
Ich postete ein Beispiel, siehe bitte meine Antwort weiter unten.
Wie kann ich einstellen, dass für alle textboxs? Ursache' ich habe eine Menge von textboxs 🙁
Eine Schleife verwenden 🙂 - Formulare haben die Eigenschaft Controls, die ein ControlCollection. Sie iterieren über Elemente mit
foreach (var c in form.Controls)
testen Sie, ob das aktuelle Steuerelement eine TextBox mit TextBox tb = c as TextBox; if (tb != null) ...
und setzen die cursor-position für tb
.Es bedeutet, es gibt keine Möglichkeit, diese. Ex eine Eigenschaft von win form? Wir müssen dies manuell tun 🙁
Ich postete ein Beispiel, siehe bitte meine Antwort weiter unten.
InformationsquelleAutor vNext | 2011-11-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Im folgenden Beispiel wird die Cursorposition nach dem zweiten Zeichen in jedem Textfeld des Formulars. Der Fokus wird auf die Letzte, sondern durch drücken der TAB-Taste wiederholt, können Sie stellen Sie sicher, dass die cursor-position gesetzt wurde für jedes Textfeld.
Deine Idee funktioniert nur, wenn alle Steuerelemente sind Textfelder. Wenn Sie auch eine Schaltfläche auf das Formular, dann erhalten Sie eine Ausnahme System sagen.Windows.Formen.Schaltfläche können nicht konvertiert werden System.Windows.Formen.TextBox.
Ich bin nicht ganz sicher, hast du Recht. Ich habe gerade ein Formular erstellt mit einem button und einem Textfeld, dann schrieb das folgende: foreach (TextBox tb in diesem.Controls) { MessageBox.Show(tb.Name); } Und noch keine Probleme gehabt, es auszuführen und den Namen der textbox auf die form, wird es einfach übersprungen die Schaltfläche. Sehr interessiert, wenn es für Sie nicht funktioniert - warum es nicht funktioniert. Ich habe versucht es auf einem Windows Forms, Visual Studio 2010, .NET Framework 4 Client Profile (die Standard-Einstellungen für mich). Sorry für das schreiben von code in die Kommentare, ich weiß, es erscheint nicht in Ordnung.
Getestet habe ich Ihre Idee mit dem obigen code, mit zwei änderungen: (1) wurde eine neue Schaltfläche Hinzugefügt (
var button = new Button(); form.Controls.Add(button);
), und (2) verändert dieform.Shown
event-handler-Delegaten zuforeach (TextBox textBox in form.Controls) { textBox.Focus(); textBox.SelectionStart = 2; textBox.SelectionLength = 0; }
. Letzteres wirft die Ausnahme habe ich oben erwähnt.Du hast Recht. Nun bemerkte ich, warum es trick mich. In der Gezeigten event-handler des Prozesses getötet wird (Visual Studio angezeigt, wenn Sie Debuggen, zeigen Sie die Zeile mit der Ungültigen Cast Exception). Wenn Sie versuchen, den code in der Load-Ereignishandler werden Sie feststellen, dass die form normal geladen (außer es wird nicht wie erwartet funktionieren). Wenn Sie den code in try .. catch-block, den Sie immer noch in der Lage sein zu fangen InvalidCastException. Ziemlich seltsames Verhalten.
InformationsquelleAutor kol
Versuchen , Hoffe Das Hilft Dir 😉
InformationsquelleAutor Ali Gh
//Windows forms maskedTextBox-Eingabe von Rechts nach Links testex mit '##.####' Maske dezimal(6,4);
private void maskedTextBoxMaskRTF_KeyPress(object sender, KeyPressEventArgs e)
{
InformationsquelleAutor Rafael Salgado