C# 具有透明背景的Windows窗体,可以通过 介绍

C# 具有透明背景的Windows窗体,可以通过 介绍,c#,.net,vb.net,winforms,sharpdx,C#,.net,Vb.net,Winforms,Sharpdx,使用C#或VB.NET。我试图使窗体的背景透明;此窗体将与其他窗口重叠,它将是最顶部的窗口,因此透明窗体(及其控件)必须能够不接收焦点,并且可以通过鼠标单击,这意味着如果我在透明背景上单击鼠标左键,则透明窗体(及其控件)必须能够在透明背景上单击窗口(在Z顺序窗口中)是必须接收单击的窗口 注: 为了避免焦点,我将覆盖CreateParams属性,如前所述 为了使我的表单透明,我调用了Win32dwmextendframeintoclienterea函数,还使用了前面解释过的库。但我认为这与问题本身

使用C#或VB.NET。我试图使窗体的背景透明;此窗体将与其他窗口重叠,它将是最顶部的窗口,因此透明窗体(及其控件)必须能够不接收焦点,并且可以通过鼠标单击,这意味着如果我在透明背景上单击鼠标左键,则透明窗体(及其控件)必须能够在透明背景上单击窗口(在Z顺序窗口中)是必须接收单击的窗口

注:

为了避免焦点,我将覆盖
CreateParams
属性,如前所述

为了使我的表单透明,我调用了Win32
dwmextendframeintoclienterea
函数,还使用了前面解释过的库。但我认为这与问题本身无关

问题 我将演示如何使用图像。下面是一个表单的图像(没有透明度,只是为了简化理解),重叠到文本编辑器程序的窗口;请注意,我的表单没有获得焦点。问题是,当我单击表单的背景(或其控件之一)时,背景上的窗口会出现问题(文本编辑器窗口)仍有焦点,但无法接收单击

这是与上面相同的图像,但具有透明形式:

研究 我真的不确定要调查什么,所以我在尝试通过覆盖透明窗体的窗口过程(WndProc)来测试相关的windows消息,比如
WM_-NCHITEST
WM_-MOUSEACTIVATE
消息,从而在试错阶段找到一些有用的东西,如下所述:


在Visual Studio中检查RAD设计器

  • 标签是否停靠以填充
  • 主窗体在哪里可以单击

在主父级中,透明颜色为单击,但组件仍将保留单击。

您可以通过使用WinAPI向透明窗口下方的窗口发送单击(鼠标上下)消息来完成此操作

您需要在需要的点下方找到窗口

您必须相应地转换单击事件的位置,因为消息是基于相对窗口位置而不是绝对屏幕位置进行处理的


事实上,我在多年前成功地自动玩了一个facebook游戏。

你在找什么?或者?(阅读答案中的注释部分,启用或禁用点击)@Reza Aghaei非常感谢,请随时发布一个答案以提高您的声誉。方法是覆盖CreateParams以设置这些扩展样式,并将表单不透明度级别设置为1%到99%的不透明度(0.01R到0.99R);我发现使用这种方法,如果让表单处于默认值(我的意思是100%不透明),那么表单不能100%不透明,窗体将显示为透明的…从字面上说,所有内容都将完全透明,因此窗体及其控件将完全消失,但它将在99%不透明的情况下完美工作…这是一件奇怪的事情。不如将窗体缩短一点。@ElektroStudios因为我不确定您的要求,我宁愿只保留一条评论。请随时访问ost基于我共享的其他链接的答案:)