C#使表格成为鼠标事件的首要任务

时间:2017-05-11 13:04:04

标签: c# winforms mouseevent form-control

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

0 个答案:

没有答案