我有一个 C# 表单,主要由面板覆盖。我在表格周围放了一个红色边框。这是表单中唯一可见的部分。面板明显地覆盖了表格的其余部分。每当我将鼠标移到表单上时,红色边框是它识别为表单的唯一部分。如果我将鼠标移到表单上的面板上,它不会识别出鼠标仍在表单上。有没有办法可以操纵表单对象,以便将它们视为“表单的一部分”?
这是我试图实现这一目标的方法:
注意:这是我拥有的代码的一部分。如果您需要更多,我当然愿意添加它。
private void rightClickMenu_Paint(object sender, PaintEventArgs e)
{
ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle,
Color.Red, 1, ButtonBorderStyle.Solid,
Color.Red, 1, ButtonBorderStyle.Solid,
Color.Red, 1, ButtonBorderStyle.Solid,
Color.Red, 1, ButtonBorderStyle.Solid);
}
private bool MouseInControl(Control ctrl)
{
mouseInControl = ctrl.ClientRectangle.Contains(PointToClient(Control.MousePosition));
if(mouseInControl)
{
rcmTimer.Stop();
rcmTimer.Interval = 500;
}
else
{
CustomForm.rightclickmenuform.Hide();
}
Console.WriteLine(mouseInControl);
return mouseInControl;
}
private void rightClickMenu_MouseEnter(object sender, EventArgs e)
{
MouseInControl(this);
}
private void rightClickMenu_MouseLeave(object sender, EventArgs e)
{
MouseInControl(this);
}
正如我之前所说,表单周围的红色边框是此事件唯一能检测到的东西。一旦你离开边界,代码就会认为你在表单之外,即使你不在。
PS:我从这个问题中找到了这个方法: https ://stackoverflow.com/a/31157183/6804700