首页 新闻 搜索 专区 学院

wpf的窗体和控件都设置成透明以后,MouseMove事件不执行了。

0
悬赏园豆:50 [已解决问题] 解决于 2017-11-06 14:48

请问园子里的大神,有以下两个问题,有知道解决方案请告知。

问题1如题,前台代码和后台代码都给出来了,前台包括窗体都设置成了透明,TextBlock 加了一个MouseMove事件,后台TextBlock_MouseMove事件中有打印信息,不执行MouseMove事件。如果把TextBlock改成有色背景Background="AliceBlue" Opacity="0.01"即使把透明因子设置0.01同样很好的执行了MouseMove事件。请大神解答。

 

问题2就是我MouseMove的后台执行代码里面加了模拟鼠标键盘的API,在坐标位置模拟鼠标右键,执行此句:WpfMouseProject.Core.MouseTool.MoveTo(new System.Drawing.Point(300, 300));可以实现右键功能,执行此句:WpfMouseProject.Core.MouseTool.MoveTo(new System.Drawing.Point(p.X , p.Y));右键菜单功能出不来,个人理解,因为xy坐标获取的当前位置,右键是当前窗口当住了,因为我的窗口是Topmost="True"置顶的。稍微偏移一点坐标位置是可以弹出右键菜单功能的。所以也是我的问题一想解决的问题,把控件设置成透明希望能无遮挡实现右键功能。希望有大神解答。

------------------------前台-------------------------------------

<Window x:Class="WpfMouseProject.Window3"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowStyle="None"
Background="Transparent"
WindowStartupLocation="CenterScreen"
AllowsTransparency="True"
Topmost="True"
ShowInTaskbar="True"
Title="Window3" Height="60" Width="60">
<Grid Background="Transparent">
<!--<Button Content="Button" Click="Button_Click" Background="Transparent" Style="{x:Null}"/>-->
<Border BorderBrush="Red" BorderThickness="0.2">
<TextBlock Width="60" Height="60" MouseMove="TextBlock_MouseMove" Background="Transparent"></TextBlock>
</Border>

</Grid>
</Window>

 

------------------------后台----------------------------------------------

private void TextBlock_MouseMove(object sender, MouseEventArgs e)
{
MousePosTool.POINT p = new MousePosTool.POINT();
MousePosTool.GetCursorPos(out p);
Point controlPoint = Mouse.GetPosition(e.Source as FrameworkElement);//WPF方法
Point screenPoint = (e.Source as FrameworkElement).PointToScreen(controlPoint);//WPF方法

Console.WriteLine("X:" + p.X + "Y:" + p.Y);
WpfMouseProject.Core.MouseTool.MoveTo(new System.Drawing.Point(p.X , p.Y));
//WpfMouseProject.Core.MouseTool.MoveTo(new System.Drawing.Point(300, 300));
WpfMouseProject.Core.MouseTool.Click(MouseButton.Right);
}

布尔2013的主页 布尔2013 | 初学一级 | 园豆:100
提问于:2017-10-20 16:05
< >
分享
最佳答案
0

问题1,鼠标事件不执行,只能通过鼠标钩子

问题2,通过API设置穿透功能

布尔2013 | 初学一级 |园豆:100 | 2017-11-06 14:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册