模拟平键鼠标的MouseDown和鼠标悬停 [英] Simulate flat button mouse MouseDown and MouseOver

查看:327
本文介绍了模拟平键鼠标的MouseDown和鼠标悬停的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Windows窗体的一些按钮F键的应用程序。当您将鼠标移动到按钮获取灰色的,当你点击他们得到一个稍微lighyer灰色。我想模仿与F键按键这种行为......你会怎么做呢?

I have a Windows Forms application with some buttons for the F keys. When you place the mouse over the buttons the get grey, and when you click they get a slightly lighyer grey. I would like to mimic that behaviour with F key keystrokes... how would you do it?

推荐答案

最后我实现了按钮更改背景:

Finally I implemented the button changing the background:

class FunctionButton : Button
{
    private Color m_colorOver;
    private bool m_isPressed;

    public FunctionButton() : base()
    {
        m_isPressed = false;
    }

    protected override void OnGotFocus(EventArgs e)
    {
        OnMouseEnter(null);
        base.OnGotFocus(e);
    }

    protected override void OnLostFocus(EventArgs e)
    {
        if (!m_isPressed)
        {
            OnMouseLeave(null);
        }

        base.OnLostFocus(e);
    }

    protected override void OnMouseLeave(EventArgs e)
    {
        if (!Focused && !m_isPressed)
        {
            base.OnMouseLeave(e);
        }
    }

    public void FunctionKeyPressed()
    {
        // Handle just the first event
        if (!m_isPressed)
        {
            m_isPressed = true;
            m_colorOver = FlatAppearance.MouseOverBackColor;
            FlatAppearance.MouseOverBackColor = FlatAppearance.MouseDownBackColor;

            OnMouseEnter(null);
            PerformClick();    
        }
    }

    public void FunctionKeyReleased()
    {
        m_isPressed = false;
        FlatAppearance.MouseOverBackColor = m_colorOver;

        if (Focused)
        {
            OnMouseEnter(null);
        }
        else
        {
            base.OnMouseLeave(null);
        }
    }
}



这不是最干净的方式,但它工作正常。我想更多的例子有更清洁,更优雅的风格这样做。

It is not the most clean way but it works fine. I would like more examples doing this with a cleaner and more elegant style.

这篇关于模拟平键鼠标的MouseDown和鼠标悬停的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆