Ich habe zwei verwandte Probleme, brauchen Sie Ihre Hilfe, um herauszufinden.Zurück Cursor an den Anfang des Textfelds nach dem Treffer auf Enter, um Zeilenumbrüche zu vermeiden und Leerraum zu vermeiden
In meinem Programm schreibe ich die beliebige Phrase in textBox1, dann drücke ich die Eingabetaste auf meiner Tastatur und sehe diesen Text in der textBox2.
aber wenn ich die meine Phrase drücken Sie die Eingabetaste in textBox2 zu zeigen, Cursor in textBox1 geht in die nächste Zeile und schafft Zeilenumbruch
Aber nach Hit eingeben und Reinigung, möchte ich den Cursor an den Anfang des textBox1 zurückzukehren.
Ich habe versucht, es so aus:
textBox1.Focus();
textBox1.Select(0, 0);
und dies, aber nicht funktioniert für mich:
textBox1.Select(textBox1.Text.Length, 0);
außer, dass ich den Cursor an den Anfang nur zurückkehren wollen, diese Zeile Pause verletzt die Reihenfolge in einem Textdokument, weil ich diese Zeilen in das Textdokument schreibe. Zeile für Zeile nach jedem Treffer bei Enter.
Zum Beispiel, wenn mit der Taste Verwendung ich diesen Auftrag in Folge habe:
phrase1
phrase2
phrase3
...
mit Enter habe ich diese:
phrase1
phrase2
phrase3
Ich denke, dass die Lösung dieses Problems nicht lösen kann im Anschluss an einen, so wie sie verwandt sind, wäre es gut, auch diesen zu lösen, weil ich keine Ahnung habe, wie es geht.
Auch ich muss den Leerraum vermeiden, der am Ende der Zeile gelassen werden kann, bevor ich die Enter-Taste drücke. Es verletzt auch die Reihenfolge in meinem Textdokument. Ich will nicht den Ausdruck oder ein Wort mit white-space am Ende:
phrase1< without white-space
phrase2 < with unwanted white-space at the end
...
hier:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace XXX_TEST
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ActiveControl = textBox1;
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
textBox2.AppendText(textBox1.Text + "\n");
textBox1.Text = "";
}
}
}
}
EDIT:
Lösung mit String.TrimEnd()
Funktion und e.SuppressKeyPress = true;
:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace XXX_TEST
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ActiveControl = textBox1;
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
textBox2.AppendText(textBox1.Text.TrimEnd() + "\n");
textBox1.Text = "";
e.SuppressKeyPress = true;
}
}
}
}
Könnten Sie bitte Ihre Frage umformulieren? Momentan verstehe ich überhaupt nicht, was Sie erreichen wollen. –
@Visual Vincent hallo, fertig, hoffe jetzt besser –
Also willst du 'TextBox1' grundsätzlich löschen, wenn der Benutzer Enter drückt? Du sagst, dass das Caret nicht zum Anfang zurückgeht, was ich nicht verstehe, denn wenn die TextBox keinen Text enthält, wird das Caret am Anfang sein. –