【发布时间】:2011-05-22 06:13:14
【问题描述】:
我在 WinForm 中有一个 WPF 用户控件:
绿色部分是 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 时,我都需要“听”键盘命令。
实际代码不起作用(在 tabPage2 打开的情况下按键盘时出现任何消息)。
为什么?
编辑 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 UserControl 捕获。
【问题讨论】:
标签: .net wpf winforms keyboard