C# WPF UI覆盖禁用点击框并允许鼠标点击?
如果我想在顶部绘制一些UI元素ex TEXT标签作为windows的常规覆盖,但我不想让它们与鼠标交互,因此仍然可以单击下面呈现的任何按钮/应用程序,我该如何做“ishitestvisible=“False”仍然会阻止鼠标与底层应用程序的连接C# WPF UI覆盖禁用点击框并允许鼠标点击?,c#,wpf,C#,Wpf,如果我想在顶部绘制一些UI元素ex TEXT标签作为windows的常规覆盖,但我不想让它们与鼠标交互,因此仍然可以单击下面呈现的任何按钮/应用程序,我该如何做“ishitestvisible=“False”仍然会阻止鼠标与底层应用程序的连接 WindowStyle="None" ShowInTaskbar="False" AllowsTransparency="True" Background="Transparent" 示例在WPF应用程序的不透明部分上时,无法单击下面的windows窗口
WindowStyle="None"
ShowInTaskbar="False"
AllowsTransparency="True"
Background="Transparent"
示例在WPF应用程序的不透明部分上时,无法单击下面的windows窗口
我找到了一个解决方案,它比我想象的要复杂得多,而且甚至不必设置ishitestvisible=“False” 代码
using System;
using System.Windows;
using System.Runtime.InteropServices;
using System.Windows.Interop;
namespace clickThruUI
{
public static class WindowsServices
{
const int WS_EX_TRANSPARENT = 0x00000020;
const int GWL_EXSTYLE = (-20);
[DllImport("user32.dll")]
static extern int GetWindowLong(IntPtr hwnd, int index);
[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle);
public static void SetWindowExTransparent(IntPtr hwnd)
{
var extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT);
}
}
public partial class MainWindow : Window
{
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
var hwnd = new WindowInteropHelper(this).Handle;
WindowsServices.SetWindowExTransparent(hwnd);
}
public MainWindow()
{
InitializeComponent();
}
}
}
@FCin作为一项测试,我创建了一个新的VS项目,只添加了一个大文本标签,并将其全部设置为透明和“IsHitTestVisible=“False”,因此不应该是捕获单击事件的任何内容,问题是它只在文本所在的位置阻止鼠标。@YvetteColomb现在已经添加了一个图像。@YvetteColomb好吧,WPF的任何部分都不可单击,它的简单之处在于windows UI应用程序在屏幕上绘制一些文本/位图,基本上类似于“gdi+绘制到屏幕”。在您的视图中将
e.Handled
设置为False。单击事件有什么区别吗?@Vinicius不确定“View.Clicked event”是什么意思我没有添加任何单击事件。