2013-02-18 11 views
8

Voglio sapere come ottenere l'ultimo carattere scritto in TextBox. Non significa l'ultimo della stringa. Per esempio, scrivo questo:Come ottenere l'ultimo carattere scritto nella casella di testo?

Questo è un test.

Ma 's' dimenticato, in modo muovo il dito per la 'i' e aggiungo la 's':

Questo è un test.

Quindi, come posso ottenere la "s"?

voglio ottenere in char o una stringa, ma non so come fare ...

spero sia chiaro.

+0

Ogni volta che si immette un carattere, convertire la stringa in una matrice di caratteri, mantenere la vecchia stringa in una matrice di caratteri e trovare il primo indice in cui i caratteri non corrispondono. Ad esempio, con le stringhe che hai fornito, la vecchia stringa all'indice 6 sarebbe '' mentre la nuova stringa all'indice 6 sarebbe 's', quindi sai che questo era il carattere che è stato inserito. – Jonathan

+0

_Hmm_, suona come me questa è un'intelligenza artificiale piuttosto che un problema di programmazione. –

+0

Se Windows Phone 7 o 8 supporta ancora il copia-incolla (6), cosa vorresti che l'applicazione mostrasse, l'ultimo carattere inserito con una chiave oi dati incollati? –

risposta

8

Se si desidera ottenere l'ultimo carattere scritto, allora iscriviti TextBox all'evento KeyDown:

C#:

textBox.KeyDown += textBox_KeyDown; 

XAML:

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

Poi:

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

Se si desidera ottenere l'indice dell'ultimo carattere scritto, questo è più complicato. Una delle soluzioni potrebbe essere il rilevamento della posizione del mouse e del cursore nello TextBox.

+1

Qual è la differenza tra l'aggiunta di 'nuovo System.Windows.Forms.KeyPressEventHandler (this.textBox1_KeyPress)' e 'this.textBox1_KeyPress'? –

+0

In C# non c'è differenza. Ho scritto il codice del designer, che utilizza nomi completi. –

+0

Grazie! E, infatti, ho bisogno anche dell'indice. Come possiamo tracciare la posizione del cursore in WP? – TDK

4

La risposta del yBee è quasi corretta, con l'eccezione che evento si chiama KeyDown, non KeyPress, almeno su Windows Phone 8.

+1

Sono entrambi eventi validi. 'KeyPress' funziona meglio per questo, dal momento che non viene generato per chiavi non di caratteri. http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress.aspx –

+2

Alla domanda è stato chiesto il telefono Windows e non i moduli Windows. Keypress non è presente in caso di Windows Phone. L'evento disponibile è KeyDown. – Manish

+0

@Manish Questo era esattamente il mio punto, grazie. – Haspemulator

0

utilizzando questo codice per ottenere ultimo carattere inserito nel testo

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

Dai un'occhiata, potrebbe essere d'aiuto. Per ottenere l'ultimo carattere di un testo un altro suggerimento è quello di aggiungere un

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

e poi, utilizzare

int lineCount = nameTextbox.Lines.Count();

e, infine, utilizzare il metodo

nameTextbox.GetFirstCharIndexFromLine(lineCount).

È possibile avere (indice-1) (o Qualunque cosa, fare attenzione e testarlo con un testo più piccolo) come indice del proprio ultimo carattere.

Problemi correlati