gpt4 book ai didi

c# - C# Windows 窗体鼠标事件问题中的自定义控件

转载 作者:太空狗 更新时间:2023-10-30 00:36:59 25 4
gpt4 key购买 nike

我有一个面板控件的 mouseenter 和 mouseleave 事件,当鼠标进入时改变背景色,离开时变回白色。

我在这个面板中也有 Label 控件,但是当鼠标进入 Label 控件时,面板的 mouseleave 事件会触发。

这是有道理的,但是当鼠标在其区域中而内部其他控件不影响它时,我如何保持面板的背景色不变?

最佳答案

您可以使用 GetChildAtPoint() 来确定鼠标是否在子控件上。

private void panel1_MouseLeave(object sender, EventArgs e)
{
if (panel1.GetChildAtPoint(panel1.PointToClient(MousePosition)) == null)
{
panel1.BackColor = Color.Gray;
}
}

如果控件实际上不是子控件,您仍然可以使用 MousePosition 和 PointToScreen 来确定鼠标是否仍在控件的范围内。

private void panel1_MouseLeave(object sender, EventArgs e)
{
Rectangle screenBounds = new Rectangle(this.PointToScreen(panel1.Location), panel1.Size);
if (!screenBounds.Contains(MousePosition))
{
panel1.BackColor = Color.Gray;
}
}

关于c# - C# Windows 窗体鼠标事件问题中的自定义控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/347439/

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