提问人:rookie 提问时间:11/7/2023 最后编辑:rookie 更新时间:11/8/2023 访问量:31
在 wpf 中使用 WindowsFormsHost 控件生成的鼠标事件的问题
The issue of mouse events generated by using the WindowsFormsHost control in wpf
问:
<Window x:Class="ARLargeScreen.MainWindow "
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="MainWindow"
Loaded="MainWindow_Loaded"
mc:Ignorable="d"
Height="2160"
Width="3860"
ResizeMode="NoResize"
WindowStyle="None"
Background="#80BF7F11"
MouseDoubleClick="Window_MouseDoubleClick">
<Viewbox IsHitTestVisible="False">
<ScrollViewer VerticalScrollBarVisibility="Hidden"
HorizontalScrollBarVisibility="Hidden"
Name="sv1">
<Canvas x:Name="MainCanvas"
Width="3860"
Height="2160"
Background="Transparent" >
<WindowsFormsHost x:Name="MyPictureBoxHost"
Width="3860"
Height="2160" IsHitTestVisible="False">
<wf:PictureBox x:Name="Me_MediaPlayer"
/>
</WindowsFormsHost>
</Canvas>
</ScrollViewer>
</Viewbox>
</Window>
在上面窗体的 WindowsFormsHost 中,我必须使用 picturebox 控件来更新视频流,但这会导致窗体的窗口to_ 未触发 MouseDoubleClick 事件,并且未触发已重写的 OnMouseMove、OnMouseLeftButtonUp 和 OnPreviewMouseLeftButtonDown 事件
我在 WindowsFormsHost 上使用 IsHitTestVisible=“False” 方法来阻止此控件,但它不起作用
因为使用第三方控件只能使用 Picturebox 来呈现内容,所以我们只能使用 Picturebox。真的没有办法吗
答: 暂无答案
评论
WindowsFormsHost
实际上在WPF窗口上新建了一个“无边框窗口”的顶部,并实时跟随控制位置,这意味着上面的所有鼠标操作都会被这个窗口“吃掉”,所以应该尝试使用winfrom event on。Me_MediaPlayer
WindowsFormsHost
IsHitTestVisible
WindowsFormsHost
Image