我有一个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