首页 新闻 会员 周边 捐助

用WPF写了个用户控件,现在把控件集成在winform当中演示,winform无法捕获键盘事件

0
悬赏园豆:10 [已解决问题] 解决于 2019-01-06 10:22

winform已经设置KeyPreview为true,在winform窗体为空白,无任何控件的情况下,可以捕获Form1_KeyPress等事件,但引用了wpf控件,就取不到了,wpf控件那边也没有什么特别的地方

XAML如下

<UserControl x:Class="WPFImage.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPFImage"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
>
<Grid IsManipulationEnabled="True" Background="Transparent">
<Image Name="imgTest" />
</Grid>
</UserControl>

请问怎么才能捕获Form1_KeyPress事件呢

duxer的主页 duxer | 初学一级 | 园豆:8
提问于:2019-01-05 13:20
< >
分享
最佳答案
0

检查WPF是否取得焦点,这样Winform是无法触发事件的;强制让Winform获取按键焦点。
考虑在WPF的按键事件中添加“e.Handled = false;”,以让按键事件继续传递。

收获园豆:10
楚人Leo | 小虾三级 |园豆:803 | 2019-01-05 14:10

如果在WPF控件中添加一个TextBox,在这个TextBox按键的话,主窗体可以收到消息,怎么才能在这个Image当中处理按键消息呢,因为现在演示主要功能就是图片相关的处理,没有其它控件

duxer | 园豆:8 (初学一级) | 2019-01-05 21:55

@duxer:
在UserControl的Loaded事件处理函数中添加一句:imgTest.Focus();
并且设置Image属性:Focusable="True"
对于所有默认无法获得焦点的控件都适用。

楚人Leo | 园豆:803 (小虾三级) | 2019-01-05 22:52

@楚人Leo: 可以了,谢谢

duxer | 园豆:8 (初学一级) | 2019-01-06 10:22

@duxer: 不客气

楚人Leo | 园豆:803 (小虾三级) | 2019-01-07 00:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册