WPF C# 实现鼠标穿透窗体
如题,想在WPF下鼠标穿透窗体,当点击窗体时,可以响应窗体后面的应用程序。也就是整个桌面被这个WPF应用程序覆盖,这个应用程序是透明的,最顶层的。当在这个应用程序上点击鼠...
如题,想在WPF下鼠标穿透窗体,当点击窗体时,可以响应窗体后面的应用程序。
也就是整个桌面被这个WPF应用程序覆盖,这个应用程序是透明的,最顶层的。当在这个应用程序上点击鼠标的时候,把这个鼠标事件传递给下面一层的应用程序。 展开
也就是整个桌面被这个WPF应用程序覆盖,这个应用程序是透明的,最顶层的。当在这个应用程序上点击鼠标的时候,把这个鼠标事件传递给下面一层的应用程序。 展开
4个回答
展开全部
如果要作成透明的话,窗体本身很难获得Mouse事件,直接点到后面的东西去了,我做了个例子
Window.xmal代码:
<Window x:Class="Test.Class1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Right Click To Close" Height="300" Width="300"
WindowStyle="None" AllowsTransparency="True" MouseRightButtonUp="WindowClicked"
Background="{x:Null}"
>
<Grid MouseRightButtonDown="WindowClicked">
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=Title}"
FontSize="18" Background="Transparent" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="20"
MouseLeftButtonDown="DragWindow" FontFamily="Impact" Foreground="Red"/>
<Viewbox Stretch="Uniform" MouseLeftButtonDown="DragWindow">
<Path Fill="#80D0E0FF" Stroke="Red" StrokeThickness="0" HorizontalAlignment="Center" VerticalAlignment="Center"
Data="M79,3L65,82 17,91 50,138 96,157 104,192 175,154 190,167 218,78 156,76 157,9 111,39z"/>
</Viewbox>
</Grid>
</Window>
Window.xmal.cs 代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace Test
{
public partial class Class1 : System.Windows.Window
{
public Class1()
{
InitializeComponent();
}
public void DragWindow(object sender, MouseButtonEventArgs args)
{
DragMove();
}
public void WindowClicked(object sender, MouseButtonEventArgs args)
{
Close();
}
}
}
Window.xmal代码:
<Window x:Class="Test.Class1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Right Click To Close" Height="300" Width="300"
WindowStyle="None" AllowsTransparency="True" MouseRightButtonUp="WindowClicked"
Background="{x:Null}"
>
<Grid MouseRightButtonDown="WindowClicked">
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=Title}"
FontSize="18" Background="Transparent" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="20"
MouseLeftButtonDown="DragWindow" FontFamily="Impact" Foreground="Red"/>
<Viewbox Stretch="Uniform" MouseLeftButtonDown="DragWindow">
<Path Fill="#80D0E0FF" Stroke="Red" StrokeThickness="0" HorizontalAlignment="Center" VerticalAlignment="Center"
Data="M79,3L65,82 17,91 50,138 96,157 104,192 175,154 190,167 218,78 156,76 157,9 111,39z"/>
</Viewbox>
</Grid>
</Window>
Window.xmal.cs 代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace Test
{
public partial class Class1 : System.Windows.Window
{
public Class1()
{
InitializeComponent();
}
public void DragWindow(object sender, MouseButtonEventArgs args)
{
DragMove();
}
public void WindowClicked(object sender, MouseButtonEventArgs args)
{
Close();
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
form的试过,wpf的还没玩过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
FORM的简单 WPF是这东东还没用过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
穿透?还是不显示鼠标的光标?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询