8

Ich möchte wissen, wie Sie das neueste Zeichen in TextBox geschrieben erhalten. Es bedeutet nicht das letzte der Saite. Zum Beispiel schreibe ich dies:Wie bekomme ich das neueste Zeichen in Textbox geschrieben?

Dies ist ein Test.

Aber ich vergaß 's', so bewege ich mich meinen Finger auf das 'i' und ich füge hinzu, die 's':

Dies ist ein Test.

Also, wie kann ich das 's' bekommen?

Ich mag es in char oder String erhalten, aber ich weiß nicht, wie ...

zu tun, ich hoffe, es ist klar.

+0

Jedes Mal, wenn ein Zeichen eingegeben wird, wandeln Sie die Zeichenfolge in ein Array von Zeichen um, behalten Sie die alte Zeichenfolge in einem Array von Zeichen und suchen Sie den ersten Index, bei dem die Zeichen nicht übereinstimmen. Mit den von Ihnen bereitgestellten Strings wäre zum Beispiel die alte Zeichenfolge in Index 6 "", während die neue Zeichenfolge in Index 6 "s" wäre. Sie wissen also, dass dies das eingefügte Zeichen war. – Jonathan

+0

_Hmm_, klingt für mich, das ist eher eine künstliche Intelligenz als ein Programmierproblem. –

+0

Wenn Windows Phone 7 oder 8 weiterhin das Einfügen von Kopien unterstützt (6 did), was möchten Sie, dass Ihre Anwendung das zuletzt eingegebene Zeichen mit einem Schlüssel oder den eingefügten Daten anzeigt? –

Antwort

8

Wenn Sie das letzte geschriebene Zeichen erhalten möchten, abonnieren Sie dann TextBox zum KeyDown Ereignis:

C#:

textBox.KeyDown += textBox_KeyDown; 

XAML:

<TextBox x:Name="textBox" KeyDown="textBox_KeyDown" /> 

Dann:

private void textBox_KeyDown(object sender, KeyEventArgs e) 
{ 
    /* e.Key contains the keyboard key associated with the event. */ 
} 

Wenn Sie den Index des letzten geschriebenen Zeichens erhalten möchten, ist dies komplizierter. Eine der Lösungen könnte die Verfolgung der Mausposition und des Mauszeigers in der TextBox sein.

+1

Was ist der Unterschied zwischen dem Anhängen 'neuer System.Windows.FormsKeyPressEventHandler (this.textBox1_KeyPress)' und 'this.textBox1_KeyPress'? –

+0

In C# gibt es keinen Unterschied. Ich habe den Code des Designers geschrieben, der voll qualifizierte Namen verwendet. –

+0

Danke! Und ich brauche auch den Index. Wie können wir die Cursorposition in WP verfolgen? – TDK

4

Die Antwort des yBee ist fast richtig, mit der Ausnahme, dass Ereignis aufgerufen wird KeyDown, nicht KeyPress, zumindest auf Windows Phone 8.

+1

Sie sind beide gültige Ereignisse. 'KeyPress' funktioniert dafür besser, da es nicht für noncharacter Tasten ausgelöst wird. http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress.aspx –

+2

Die Frage wurde für Windows-Telefon und nicht Windows-Formulare gestellt. Bei Windows Phone ist die Tastensperre nicht vorhanden. Das verfügbare Ereignis ist KeyDown. – Manish

+0

@Manish Das war genau mein Punkt, danke. – Haspemulator

0

mit diesem Code letztes Zeichen in Textfeld eingefügt zu bekommen

private void Textbox1_KeyDown(object sender, KeyEventArgs e) 
      { 
       lastchar_inserted = e.KeyValue.ToString(); // global string variable 
      } 
0

Schau mal, es könnte helfen. Um das letzte Zeichen eines Textes zu erhalten ein weiterer Vorschlag ist eine

"\n" (nameTextbox.Append("\n"))

und dann verwenden

int lineCount = nameTextbox.Lines.Count();

und schließlich die Methode verwenden

, anhängen nameTextbox.GetFirstCharIndexFromLine(lineCount).

Dort haben Sie vielleicht (Index-1) (oder was auch immer, seien Sie vorsichtig und testen Sie es mit einem kleineren Text) als Index Ihres letzten Charakters.