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事件呢
检查WPF是否取得焦点,这样Winform是无法触发事件的;强制让Winform获取按键焦点。
考虑在WPF的按键事件中添加“e.Handled = false;”,以让按键事件继续传递。
如果在WPF控件中添加一个TextBox,在这个TextBox按键的话,主窗体可以收到消息,怎么才能在这个Image当中处理按键消息呢,因为现在演示主要功能就是图片相关的处理,没有其它控件
@duxer:
在UserControl的Loaded事件处理函数中添加一句:imgTest.Focus();
并且设置Image属性:Focusable="True"
对于所有默认无法获得焦点的控件都适用。
@楚人Leo: 可以了,谢谢
@duxer: 不客气