2013-02-18 11 views
8

Chcę wiedzieć, jak uzyskać najnowszy znak napisany w TextBox. Nie oznacza to ostatniego ciągu. Na przykład piszę to:Jak uzyskać najnowszy znak napisany w polu tekstowym?

To jest test.

Ale zapomniałem 's', więc przesunąć palec do 'ja' i dodaj 'S':

To jest test.

Jak mogę uzyskać "s"?

Chcę dostać w char lub ciąg znaków, ale nie wiem jak to zrobić ...

Mam nadzieję, że to jest jasne.

+0

Za każdym razem, gdy wprowadzany jest znak, przekształć ciąg znaków w tablicę znaków, zachowaj stary ciąg w tablicy znaków i znajdź pierwszy indeks, w którym znaki się nie zgadzają. Na przykład, z podanymi ciągami, stary łańcuch w indeksie 6 będzie "", podczas gdy nowy łańcuch w indeksie 6 będzie "", więc wiesz, że to była wstawiona postać. – Jonathan

+0

_Hmm_, brzmi dla mnie jak sztuczna inteligencja, a nie programowanie. –

+0

Jeśli system Windows Phone 7 lub 8 nadal obsługuje wklejanie kopii (6 nie), co chciałbyś, aby aplikacja wyświetlała, ostatni znak wprowadzony za pomocą klucza lub wklejonych danych? –

Odpowiedz

8

Jeśli chcesz uzyskać ostatni napisany znak, a następnie zapisz TextBox do zdarzenia KeyDown:

C#:

textBox.KeyDown += textBox_KeyDown; 

XAML:

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

Następnie:

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

Jeśli chcesz uzyskać indeks ostatniego pisanego znaku, jest to bardziej skomplikowane. Jednym z rozwiązań może być śledzenie pozycji myszy i kursora w TextBox.

+1

Jaka jest różnica między dodawaniem 'new System.Windows.Forms.KeyPressEventHandler (this.textBox1_KeyPress)' i 'this.textBox1_KeyPress'? –

+0

W języku C# nie ma różnicy. Napisałem kod projektanta, który używa w pełni kwalifikowanych nazw. –

+0

Dzięki! I rzeczywiście, potrzebuję też indeksu. Jak możemy śledzić pozycję kursora w WP? – TDK

4

Odpowiedź yBee jest prawie poprawne, z tym wyjątkiem, że zdarzenie jest nazywany KeyDown nie KeyPress, przynajmniej na Windows Phone 8.

+1

Oba są prawidłowymi zdarzeniami. 'KeyPress' działa lepiej, ponieważ nie jest wywoływane dla klawiszy nie będących znakami. http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress.aspx –

+2

Zapytano o telefon z systemem Windows, a nie o Windows. Keypress nie występuje w przypadku Windows Phone. Dostępne wydarzenie to KeyDown. – Manish

+0

@Manish To był dokładnie mój punkt, dzięki. – Haspemulator

0

przy użyciu tego kodu, aby uzyskać ostatni znak wstawiony w polu tekstowym

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

Zobacz, może to pomóc. Aby uzyskać ostatni znak tekstu kolejna propozycja jest dołączyć

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

a następnie użyj

int lineCount = nameTextbox.Lines.Count();

i wreszcie, należy użyć metody

nameTextbox.GetFirstCharIndexFromLine(lineCount).

Tam możesz mieć (indeks-1) (lub Cokolwiek, bądź ostrożny i przetestuj go mniejszym tekstem) jako indeks ostatniej postaci.

Powiązane problemy