日期:2014-05-17  浏览次数:20979 次

Winform的 Button 的 鼠标 和 空格 事件 ??按下弹起状态??
本帖最后由 CCDDzclxy 于 2013-10-10 12:32:16 编辑
RT

我想在 鼠标按下时做 操作A ,在鼠标弹起时做 操作B 。
这个我知道,通过 事件 MouseDown 和 MouseUp 实现。

现在,我需要 按下 键盘某一个键时Button显示按下状态,放开某一个键时Button弹起;就好像是鼠标按下松开显示的效果一样。我找了一下,空格键满足要求,但是 按下空格 时触发什么事件?松开空格时触发什么事件?如何捕获处理??


上面可能说的不细致,下面举个例子:
当button1是选中状态时,
按下鼠标左键 或者 按下空格键 时 ,button1 呈现如下效果 :

松开鼠标左键 或者 松开空格键 时 ,button1 还原为如下效果:


上面的操作中,鼠标操作对应的事件是MouseDown 和 MouseUp,但是 空格键的按下/松开对应应该在哪里处理??






------解决方案--------------------
keydown和keyup
------解决方案--------------------
KeyUp/KeyDown?
------解决方案--------------------
KeyDown事件,判断当前按下的键是否是空格键?

------解决方案--------------------
??
private void button1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Space)
            {
                //空格键按下
                button1.KeyUp += (ss, ee) =>
                {
                    if (ee.KeyCode == Keys.Space)
                    {
                        //空格键弹起
                    }
                };
            }
        }

------解决方案--------------------
引用:
Quote: 引用:

keydown和keyup

keydown 并不会像 MouseDown 一样只触发一次,你空格不松开的话,keydown事件会一直触发

你自己做限制事件只执行一次就行了
------解决方案--------------------
5L 正解
键盘就用keydown 和 keyup
鼠标就 mousedown 和 m