У меня есть пользовательский контроль WPF в WinForm:
Зеленая часть - WPF UserControl ..
Код UserControl ниже:
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>
Каждый раз, когда я открываю tabPage2, мне нужно «слушать» команды клавиатуры.
Фактический код не работает (любое сообщение при нажатии клавиатуры с открытой вкладкойPage2).
Почему?
РЕДАКТИРОВАТЬ 1
Обновлен код 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);
}
}
}
Результат:
Function: WindowsFormsApplication2.Form1.tabPage2_Enter
Function: WindowsFormsApplication2.Form1.tabControl1_SelectedIndexChanged
Success : True
Однако результат тот же: любой keyUp захватывается пользовательским контролем WPF.