2010-08-30 8 views
5

Tamam değildir. Uygulamamda nereye odaklandığım önemli değil, bir web tarayıcısı denetimi içeren bir WindowsFormsHost içinde kullanmam dışında anahtar kombinasyonu çalışır. Web tarayıcısı denetimi için PreviewKeyDown olayını yakalamayı ve IsInputKey'i yanlış olarak ayarlamayı denedim. Bu, teoride, Ev Sahibi'nin tedavi edilmeyen anahtar hareketi dikkate almasına ve yukarı doğru göndermesine neden olmalıdır, fakat bu gerçekleşmez.WPF WindowsFormsHost kabarcık kadar işlenmemiş anahtar hareketlerini Ben bu çalışması gerektiğini anlıyorum, benim app ben bir RoutedCommand için anahtar jest (Ctrl + K) bağlı olduğundan emin değilim

GÜNCELLEME:

Ben denetimin bool IsInputKey (Keys keyData) geçersiz kılmak ve return false, çalışır ve komut olması gerektiği gibi çalıştırılmaktadır.

Belki PreviewKeyDown ele şekilde yanlış bir şey var mı?

private void browser_PreviewKeyDown (object sender, PreviewKeyDownEventArgs e) 
{ 
    e.IsInputKey = false; 
} 

Bu, ana penceremden herhangi bir tuş birleşimini yakalamamı beklemesini bekledim. Ben doğru anlamak Eğer tuş barındırılan Winform tarafından ele olduğunu önlemek istiyorsanız doğrusu

cevap

0

... Bir denetimi uzanan daha olay işleme geçirerek çözeriz ederim. Ancak, örnek kodunuz barındırılan denetimin içinde işlemeye çalıştığınızı gösterir. WPF görsel ağacında daha iyi o "dış" barındırılan kontrolünü ele tünel olayları taşınması için

. Şunları yapabilirsiniz - - örneğin aşağıdaki gibi ele:

private void Grid_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    e.Handled = true; 
} 
:

<Grid PreviewKeyDown="Grid_PreviewKeyDown" PreviewMouseDown="Grid_PreviewMouseDown" Height="250" Width="250"> 
    <WindowsFormsHost Name="windowsFormsHost1"> 
     <wf:Form1 TopLevel="False" /> 
    </WindowsFormsHost> 
</Grid> 

şöyle ele olarak olayı ayarlayarak, o olay görsel ağacının altındaki yayıldığını önler