C#Winforms:以编程方式显示Buttons Hover State

时间:2011-03-26 07:55:22

标签: c# winforms uibutton state

我在winform上显示数字键盘以输入代码。我正在使用按钮显示nummpad ...用户将只使用键盘numpad输入代码\密码\?但是当然你可以用鼠标......

enter image description here

如果我们使用鼠标点击按钮,我们会得到一个蓝色效果来显示悬停&在州... ..

我在想是否可以以某种方式以编程方式显示按钮的按下状态根据用户按下小键盘的键... HOW TO

2 个答案:

答案 0 :(得分:2)

使用按钮类的默认实现无法模拟此行为。但是,您可以对该按钮进行子类以添加此行为:

   public class KeyboardButton : Button
    {
        public void SimulateButtonDown()
        {
            this.OnMouseDown(new MouseEventArgs(MouseButtons.Left, 0, 1, 1, 0));
        }

        public void SimulateButtonUp()
        {
            this.OnMouseUp(new MouseEventArgs(MouseButtons.Left, 0, 1, 1, 0));
        }
    }

当您致电SimulateButtonDown时,按钮将进入(视觉)状态,模仿鼠标将被点击(并保持)在按钮上。您也可以为悬停事件实现这些方法。

答案 1 :(得分:1)

这不是一种自动方式,但您可以在代码中执行:Crete用于承载用户密钥交互的类,并创建此类的队列。当用户按下一个键时,两个此对象会发出向下/向上和关键信息的信号。然后让我们在表单中创建一个winform timer ,消耗队列。对于队列中的每个“事件”,请根据需要更改按钮的外观。拥有窗口计时器可让您的动画消息友好,因此您实际上应该看到按钮更改。尝试100毫秒计时器。这是一种“自己动手”的动画。