如何设置窗口透明但鼠标不穿透

pig357 2014-08-12 02:34:59
环境:VS2008 .net2.0 C# winform
问题:程序需要实现在主窗口上显示子窗口,子窗口上显示电压值,要求背景完全透明但文字不透明,可以拖动改变位置和大小;现在已经基本实现了该功能,就是透明的部分会有鼠标穿透效果,导致点击到透明部分时无法拖动子窗口。请问这个效果该如何修改?

//实现透明
label_U.BackColor = Color.White;
this.TransparencyKey = Color.White;
//移动窗口
private static void labelU_MouseDown(object sender, MouseEventArgs e)
{
FxWinApis.ReleaseCapture();
Control g = sender as Control;
if (g != null)
{
FxWinApis.SendMessage(this.Handle, FxWinApis.WM_SYSCOMMAND, FxWinApis.SC_MOVE + FxWinApis.HTCAPTION, 0);
}
}
//缩放窗口
private void FormShowVoltage_MouseDown(object sender, MouseEventArgs e)
{
this.Capture = false;
Form ff = new Form();
ff.StartPosition = FormStartPosition.Manual;
ff.Size = this.Size;
ff.Location = this.Location;

ff.SizeChanged += new EventHandler(ff_SizeChanged);
ff.LocationChanged += new EventHandler(ff_LocationChanged);

int pos = GetPostionAt(e.Location);
if (pos > 0)
{
SendMessage(ff.Handle, WM_SYSCOMMAND, SC_Size + pos, 0);//发送缩放消息
}

ff.Dispose();
}

当前已经实现的效果:

已经透明显示背景并可以移动,但透明部分有鼠标穿透效果,请问该如何取消掉该效果?
...全文
722 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
带码君 2015-09-30
  • 打赏
  • 举报
回复
引用 6 楼 pig357 的回复:
恩可以了,用了个透明的背景窗口放在下面就OK了
不还是穿透到你下面的窗体里了吗?
pig357 2014-08-13
  • 打赏
  • 举报
回复
恩可以了,用了个透明的背景窗口放在下面就OK了
卧_槽 2014-08-12
  • 打赏
  • 举报
回复
透明值设为1就可以了。
pig357 2014-08-12
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
关键是19楼的:B的透明度不为0 透明度为0则必然穿透. 或者你把A窗体区域在B中重绘,模拟透明效果
重绘主窗口区域让程序很抽风啊,不知道有没有其他的解决方法?
於黾 2014-08-12
  • 打赏
  • 举报
回复
关键是19楼的:B的透明度不为0 透明度为0则必然穿透. 或者你把A窗体区域在B中重绘,模拟透明效果
pig357 2014-08-12
  • 打赏
  • 举报
回复
引用 1 楼 Z65443344 的回复:
http://bbs.csdn.net/topics/390765225 参考
这个问题最后也没有解答出来啊, 而且还是MFC的程序,我这个是Winform的
於黾 2014-08-12
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390765225 参考

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧