gpt4 book ai didi

c# - 如果将窗体的大小调整为以前的透明区域,则不再检测到窗体上的鼠标事件

转载 作者:行者123 更新时间:2023-11-30 22:01:50 24 4
gpt4 key购买 nike

这似乎是一个错误,如果您将表单大小更改为以前透明的区域,将不再在其上检测到鼠标事件。

如何重现它:

  • 创建一个新的 Windows 窗体项目
  • 将 Form1 TransparencyKey 设置为 Magenta
  • 向 Form1 添加一个面板并将其配置为:
    • 码头填充
    • 背景颜色为洋红色

运行,现在尝试更改窗体大小,如果减小它(足以使新边框放置在当前透明区域上),鼠标将不再“检测”该侧的窗口边框。如果您最小化/恢复窗口,它将再次工作。我该如何解决?我尝试在 Form Layout/Resize 事件上刷​​新,但没有成功。

最佳答案

只是确认一下,是的,这是 Windows 8.1 上当前 Aero 实现中的一个错误。可能之前。已经存在了很长一段时间,似乎这是一个非常结构性的问题。它是一组错误的一部分,这些错误与带有透明度键集的分层窗口有关,并且让鼠标对这样的窗口透明,它也不能与 某些 的颜色选择一起正常工作 key 。在这种特定情况下,它也不适本地使框架对点击透明。

很难给出具体建议,这确实需要调用 Microsoft 支持才能取得进展。从技术上讲,您可以利用另一个错误,当您选择红色作为透明键时,窗口永远不会对鼠标点击透明:

    public Form1() {
InitializeComponent();
this.TransparencyKey = panel1.BackColor = Color.Red;
}

解决了您正在处理的错误,但当然会完全禁用鼠标透明度。您几乎肯定不会喜欢的解决方法是:

    protected override void OnResizeEnd(EventArgs e) {
base.OnResizeEnd(e);
this.RecreateHandle();
}

太明显了。程序员开始利用这些错误,有时他们故意想要这样缺乏透明度。让您想知道 Microsoft 如何在不破坏某些程序的情况下修复此问题。不漂亮。

关于c# - 如果将窗体的大小调整为以前的透明区域,则不再检测到窗体上的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27400556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com