0

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

4

0 回答 0