2011-05-08 12 views
5

ben XAML bir metin kutusu vardır:, Windows telefon 7 Handling geri silme KeyDown olayı

<TextBox Text="blah" 
     Name="blah" 
     LostFocus="blah_OnLostFocus" 
     KeyDown="blah_OnKeyDown"/> 

.cs dosyası aşağıdaki olay açıkladı:

private void blah_OnKeyDown(object sender, KeyEventArgs e) 
    { 
     TextBox t = sender as TextBox; 
     int i = 0; 
     if(e.Key == Key.Delete) 
      i = 1; 
    } 

Ben öykünücüsü'nın klavyede geri tuşuna bastığınızda , olay göz ardı edilir. Başka bir düğmeye basarsam, tetiklenir. Ayrıca, KeyUp olayı için aynı olay gövdesini kullandığımda, backspace tuşu onu tetikler.

KeyDown olayı için backspace tuşuna basıldığında nasıl izlerim? Backspace tuşuna basmak neden KeyDown olayını tetiklemiyor?

Teşekkür ederiz.

cevap

6

Key numaralandırma bakın Key.Back yerine

Key.Delete daha kullanmak gerekir. Kontrol, backspace etkinliğini alacak ve bir mektubu kaldıracak ve etkinliği etkinliğinize taşımayacaktır. Bu tasarım gereğidir. Metin kutusunda hiç harf yoksa, olayın kabarcıklandırıldığını fark edeceksiniz. Bunu aşmak için olayı işlemek için AddHandler'u kullanabilirsiniz. metin kutusu olmalıdır

private void blah_OnKeyDown(object sender, KeyEventArgs e) 
{ 
    TextBox t = sender as TextBox; 
    int i = 0; 
    if(e.Key == Key.Back) 
      i = 1; 
} 

içten olayı işlemek, aynı zamanda onKeyDown olay çağırır:

//Handle the mainpage loaded event and add the handler to the textbox 
void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    textBox1.AddHandler(TextBox.KeyDownEvent, new KeyEventHandler(blah_KeyDown), true); 
} 

O zaman bu şekilde Key_Down olay işleyicisi değiştirin: bu yöntemi deneyin.

+0

Bu yanıtın bir uzantısı olarak, bu gönderiyi Silverlght forumlarında gör http://forums.silverlight.net/forums/p/83981/217568.aspx – Stuart

+0

Bu işe yaradı, sadece textBox1.AddHandler ... ifadesini koymak zorundaydım sayfa yapıcısına, ancak olay iki kez tetiklenmiş gibi görünüyordu. Yine de, metin kutusu boş olmadığı sürece backspace tuşuyla ilgili ilginç bir bilgi parçacığı için teşekkür ederim, bu davranışı beğendim. Her bir backspace tuşunu hala kontrol etmek isteyenler için, KeyUp olayı bu amaçla gayet iyi çalışıyor. – Eugene