首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按键时的按键速度

按键时的按键速度
EN

Stack Overflow用户
提问于 2014-06-12 03:43:54
回答 4查看 4K关注 0票数 0

有没有办法增加同一按键的一个按键事件和下一个按键事件之间的延迟?

我有一个应用程序,用户可以使用向下/向上键滚动图像。他们可以按下再松开,也可以一直按下去。有时,当用户始终保持向上/向下按键时,他们想要更快地滚动。一个按键事件和下一个按键事件之间的持续时间我相信是由Windows控制的,所以比方说,如果我打开记事本,键入字母"a“并按住键,那么我看到的速度是基于我相信的Windows控件的参数。

我可以在运行时在C#程序中更改该速度吗?一旦用户关闭应用程序,然后返回到正常的速度。

EN

回答 4

Stack Overflow用户

发布于 2014-06-12 03:50:35

我会使用类似这样的东西:

代码语言:javascript
复制
private int counter = 0;

//...

private void OnKeyDown(...)
{
   counter++;
   if (counter == <value>) //it is based on the speed
   {
       counter = 0;
       this.scrollDown();
   }
}

或者,您可以使用Timer,仅在经过一段时间后才允许向下滚动。只需使用全局bool,并在调用scrollDown方法时计时器滴答为false时将其设置为true

票数 1
EN

Stack Overflow用户

发布于 2014-06-12 03:53:38

这是一个系统范围的设置-您可以打开它并通过查看

代码语言:javascript
复制
            System.Environment.KeyboardDelay

更多,这个问题已经在这里得到了回答:Keydown event - cool down

如前所述,不建议修改该值,并且可能会涉及许多额外的权限设置。最好采用ps2goat提到的方法,创建一个计时器、线程或操作来检查按键的状态,并相应地将其传递给幻灯片放映控件。

票数 1
EN

Stack Overflow用户

发布于 2014-06-12 03:55:30

要做到这一点,最简单的方法是在窗体上为KeyDown和KeyUp事件创建事件,检查正在按下/释放的键并跟踪这些键及其被按下的时间,创建滚动和滚动图像数量的比例。

在窗体上为下面的TimerTick方法创建一个新计时器

类似这样的代码(未测试,将不会编译):

代码语言:javascript
复制
bool KeyIsDown = false;
int count = 0;

void OnKeyDown(sender, key e) //This Needs to match the event to call KeyDown
{
    if(e.key == KeyToScroll)
    {
        KeyIsDown = true;
        count = 0;
        e.handled = true;
    }
}
void OnKeyUp(sender, key e) //This Needs to match the event for KeyUp
{
    if(e.key = KeyToScroll)
    {
        KeyIsDown = false;
        e.handled = true;
    }
}

void TimerTick() //This needs to match the Timer_OnTick event
{
    if(KeyIsDown)
    {
        count++;
        ScrollImage()
    }
}

void ScrollImage()
{
    //TODO Scroll image based on count (how long the button has been pressed)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24171302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档