J'ai un WPF UserControl dans un WinForm:touche de capture dans un WPF
La partie verte est le WPF UserControl ..
Le code UserControl ci-dessous:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
protected override void OnPreviewKeyUp(KeyEventArgs e)
{
base.OnPreviewKeyUp(e);
MessageBox.Show(e.Key.ToString());
}
}
XAML:
<UserControl>
<Grid Background="DarkGreen">
<Label Content="Label" Margin="64,105,0,0" Name="label1" />
</Grid>
</UserControl>
Chaque fois que j'ouvre le tabPage2, je dois "écouter" les commandes du clavier.
Le code réel ne fonctionne pas (aucun message lorsque vous appuyez sur le clavier alors que l'onglet2 est ouvert).
Pourquoi?
EDIT 1
Mise à jour du code WinForms:
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.tabControl1.SelectedIndex == 1)
{
ElementHost elHost = (this.tabControl1.SelectedTab.Controls[0] as ElementHost);
bool success = false;
if (elHost != null)
{
success = elHost.Focus();
Console.WriteLine("Success : {0}", success);
}
}
}
Résultat:
Function: WindowsFormsApplication2.Form1.tabPage2_Enter Function: WindowsFormsApplication2.Form1.tabControl1_SelectedIndexChanged Success : True
Cependant, le résultat est le même: tout keyUp est capturé par le WPF UserControl.