WPF note on Container Cursor + winform 透明控件尝试补遗

来源:互联网 发布:金拓软件 编辑:程序博客网 时间:2024/05/03 17:59

1 Wpf note

新手入门WPF的时候可能会遇到我所遇到的白痴问题:为什么容器的Cursor属性无效?问题的描述可能是这样的:更改了Grid, Canvas等容器控件的Cursor属性后,发现鼠标在其上仍然是默认的Arrow。

这是由于容器的背景默认为透明,而透明部分的事件是无法被捕获的。对于此问题,Cursor的改变依赖于QueryCursor事件,你会发现这个事件在控件被设置为透明时将无法触发。所以解决的方法很简单:为容器设置一个有效的背景色。

2 winform透明尝试补遗

上篇博文中提到“真正透明”控件在winform中的尝试,最后以失败告终,虽然结果不会改变,但忘记了谈论一种特殊的情况:尝试利用MDI制作透明控件。

这个思路是:既然设置控件的Backgroud color只能透明到容器,而Form的transparency key则可以直接透明到桌面,则考虑使用MDI中包含多个设置指定transparency key的MDI children forms,并期待它们能够透明到主窗体(MDI parent),同时我们知道MDI容器的背景可以通过遍历controls集合获取到MDIClient实例中。

然而经过尝试我们绝望的发现,作为MDI child的窗体,其transparency key属性将会失效——还是失败。

原创粉丝点击