问题描述
我有一个与游戏的Database-API对话并显示有关某些项目信息的应用程序。用户界面的一部分如下所示:
对于灰色框,我创建了一个名为“ ItemPreviewControl”的控件,每个控件均显示有关一个特定找到的Item的信息。我希望控件在悬停时变为红色,并在鼠标离开控件时恢复为灰色。为此,我使用了ItemPreviewControl的MouseEnter-和MouseLeave-Events,并且如您所见,它也可以使用:
这是我使用的代码:
private Color mainColor_MouseEnterLeave;
private void ItemPreviewControl_MouseEnter(object sender,EventArgs e)
{
mainColor_MouseEnterLeave = this.BackColor;
this.BackColor = Color.FromArgb(192,0);
}
private void ItemPreviewControl_MouseLeave(object sender,EventArgs e)
{
this.BackColor = mainColor_MouseEnterLeave;
}
现在我遇到的问题如下:当我在其子元素之一上方移动时,“ ItemPreviewControl”也变回灰色。当我将鼠标悬停在控件的内部文本框上方时。 但是我希望控件在我离开实际控件之前一直保持红色。您对如何实现这一点有任何想法吗?
UI是Windows Forms应用程序。 UI和所有后端库都在.NET Core 3.1中。
感谢您阅读。
编辑:我的问题的解决方案: 原来,我不得不检查Mouse是否仍在UserControl的范围内。如果是,请取消并返回MouseLeave-Method,否则继续该方法。这是我更新的代码:
private void ItemPreviewControl_MouseEnter(object sender,EventArgs e)
{
this.BackColor = Color.FromArgb(192,EventArgs e)
{
if (this.ClientRectangle.Contains(this.PointToClient(MousePosition)))
return;
this.BackColor = Color.FromName("Gray");
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)