如何将MouseLeave / Enter用作布尔值?

时间:2014-08-11 13:56:25

标签: c# mouseevent

我是C#的新手,我试图在鼠标离开时改变menustrip项目的颜色。选中后的按钮。但我不能将MouseLeave用作布尔值,因为它是一个事件。它告诉“MouseLeave”只能出现在+ ='的左侧。有小费吗?

这是我尝试做的事情:

    if (e.Item.MouseLeave)
            {
                using (Brush b = new SolidBrush(Color.FromArgb(80, 80, 80)))
                {
                    e.Graphics.FillRectangle(b, e.Graphics.ClipBounds);
                }
            }

2 个答案:

答案 0 :(得分:0)

由于MouseLeave是控件上的事件,请尝试以下操作:

在创建控件时,向事件处理程序添加一个方法:

control.MouseLeave += control_MouseLeft;

然后在control_MouseLeft方法中定义要执行的操作。

void control_MouseLeft(objet sender, EventArgs e)
{
    using (Brush b = new SolidBrush(Color.FromArgb(80, 80, 80)))
    {
        e.Graphics.FillRectangle(b, e.Graphics.ClipBounds);
    }  
}

答案 1 :(得分:0)

你可以有一个全局布尔值:

private void frm_Load(object sender, EventArgs e)
{
    ctrl.MouseEnter += ctrl_MouseEnter;
    ctrl.MouseLeave += ctrl_MouseLeave;
}

private bool bMouseInside = false;

private void ctrl_MouseEnter(object sender, EventArgs e)
{
    bMouseInside = true;
}

private void ctrl_MouseLeave(object sender, EventArgs e)
{
    bMouseInside = false;
}

在您的代码中使用:

if (!bMouseInside)
{
    // using (Brush b etc..
}