2010-08-17 6 views
0

J'ai une zone de liste déroulante sur une fenêtre dans wpf et j'essaie de capturer la touche fléchée vers le bas de cette liste, mais je ne suis pas capable de le faire. Ce qui suit est le seul code que j'ai pour la liste déroulante.ne pouvait pas capturer flèche vers le bas dans la zone de liste déroulante dans wpf

<ComboBox Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" 
       PreviewKeyDown="comboBox1_PreviewKeyDown" KeyDown="comboBox1_KeyDown" IsEditable="True"/> 

C#

private void comboBox1_PreviewKeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Down) 
      MessageBox.Show("hi"); 
    } 

    private void comboBox1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Down) 
      MessageBox.Show("hi"); 
    } 

L'événement est pas touché, même lorsque je presse la touche de direction.

Répondre

2

Essayez plutôt de gérer PreviewKeyUp (ou KeyUp). Si cela ne fonctionne pas, alors il doit y avoir plus à votre fenêtre ou code (êtes-vous en train de gérer d'autres instances de ces événements)?

+0

Salut Wonko l'événement PreviewKeyUp a fonctionné. Mais pouvez-vous s'il vous plaît expliquer y PreviewKeyDown événement n'a pas été tiré pour la touche fléchée vers le bas ??? – samar

+0

Je ne suis pas sûr de cela, mais je crois que cela a à voir avec le fait que PreviewKeyDown est un événement de tunneling. En rendant le ComboBox modifiable, je crois que le TextBox qui devient partie du ControlTemplate pour le ComboBox engloutit cet événement. –

+0

Le fait qu'il s'agisse d'un événement de tunnel ne signifie-t-il pas que le gestionnaire d'événements PreviewKeyDown de samar doit se déclencher avant que le TextBox ne puisse le gérer? – xr280xr

Questions connexes