`

winform 方向键焦点丢失问题(keydown event not work)

    博客分类:
  • C#
 
阅读更多

在项目中遇到了,方向键不能被keydown event 捕捉的问题

 

下面是解决方案

 

button1.PreviewKeyDown +=new PreviewKeyDownEventHandler(button1_PreviewKeyDown);

button1.KeyDown += new KeyEventHandler(button1_KeyDown);

 

1.取消方向键丢失焦点的问题

 

protected override bool ProcessDialogKey(Keys keyData)
{
    switch (keyData)
    {
        case Keys.Left:
            // 处理代码
            break;
        case Keys.Right:
             // 处理代码
            break;
        case Keys.Up:
            // 处理代码
            break;
        case Keys.Down:
            // 处理代码
            break;
    }
    return base.ProcessDialogKey(keyData);
}

 

可以直接return false 处理

 

 

protected override bool ProcessDialogKey(Keys keyData)
{
    switch (keyData)
    {
        case Keys.Left:
        case Keys.Right:
        case Keys.Up:
        case Keys.Down:
           return false;
    }
    return base.ProcessDialogKey(keyData);
}
 

 

2.如果上面不好使的话,可能是因为winform方向键被占用,无法在下层使用,需要被激活

 

 

private void button1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    switch (e.KeyCode)
    {
        case Keys.Down:
        case Keys.Up:
            e.IsInputKey = true;
            break;
    }
}

 

 

0
0
分享到:
评论

相关推荐

    winform 不获取焦点的浮动窗

    标题中的“winform 不获取焦点的浮动窗”指的是在Windows Forms(WinForm)应用程序中创建的一种特殊类型的窗口,这种窗口可以在不转移主窗体焦点的情况下悬浮于其他窗口之上。这通常用于实现类似提示框、通知或者...

    C# winform 获取当前焦点控件

    C# winfrom获取当前焦点控件,有时候可能需要控制当前焦点控件是否是符合自己的要求而做其他动作.此代码可以获取到当前控件的类型名称

    WinForm TreeView失去焦点后选中节点风格

    Winform TreeView 失去焦点后选中的节点风格设置。

    c# winform 键盘按键控制操作移动控件,linkLabel,获取按键值,一个俄罗斯方块

    在C# WinForm应用开发中,键盘事件处理是常见的用户交互功能,特别是在创建游戏或需要精细控制用户界面元素时。本教程将详细讲解如何利用C#实现键盘按键控制操作,以移动WinForm中的控件,如`LinkLabel`,以及如何...

    winform里textBox无法获得焦点的解决方案

    在Windows Forms(WinForm)应用程序开发中,遇到控件如textBox无法正常获取焦点的问题时,开发者需要采取一些策略来确保用户交互的顺畅进行。本文将详细介绍如何解决WinForm中的textBox无法获得焦点的问题,并探讨...

    解决C#中取消方向键对控件焦点控制的实现方法

    当按下键盘上的方向键时,系统默认会改变窗体上控件的焦点,使得用户可以通过方向键进行控件间的导航。然而,在某些特定场景下,我们可能希望自定义方向键的行为,而不是让它们影响控件的焦点切换。本文将详细介绍...

    C#WinForm中的KeyDownKeyPress和KeyUp事件相关知识点

    ### C# WinForm中的KeyDown, KeyPress和KeyUp事件相关知识点 #### 一、按键的类型与识别 在C# WinForm应用中,处理用户的键盘输入是常见需求之一。Windows窗体通过引发键盘事件来响应用户的键盘操作。这些事件主要...

    winform点击enter如同点击tab焦点到下一个控件

    为了使Enter键能像Tab键一样切换焦点,我们可以在表单级别或者在每个需要响应Enter键的控件上处理KeyDown事件。下面是一个基本的实现步骤: 1. **在Form类中添加事件处理程序**:在你的Form类中,添加一个KeyDown...

    c# winform 非焦点窗体 postmessage消息,键盘消息,获取活动窗体

    c# winform,设置为非活动窗体,类似软键盘。 获取当前活动的窗体,向窗体内的控件通过postmessage发送消息,或键盘消息

    C#基于winform所创建的模拟键盘程序

    C#基于winform所创建的模拟键盘程序,因为有项目需求,所以自定义一个模拟键盘。包含模拟发送键盘指令、最小化显示悬浮框等。项目能直接运行在触摸屏上。在这个程序中,能运用到如下知识:1、通过win32发送键盘直连...

    TreeView焦点消失,背景颜色不会消失.cs

    C# Winform TreeView控件焦点消失,背景色丢失重绘

    C# Winform窗体上的控件获得焦点后变色

    C# Winform窗体上的控件获得焦点后变色。如在输入文本时可自定义背景色。可以清楚看到当前是哪个控件获得焦点

    winform键盘和鼠标事件的捕捉与重写(快捷键)

    在Windows Forms(Winform)开发中,理解和掌握键盘和鼠标事件的捕捉与重写是至关重要的,这将有助于创建更加用户友好且响应灵敏的应用程序。本文将深入探讨如何在Winform应用中处理键盘输入事件、鼠标滚轮事件,并...

    c# winform 鼠标、键盘消息拦截

    在C# WinForm应用开发中,有时我们需要对用户的键盘和鼠标事件进行特殊的处理,比如拦截、过滤或修改这些消息。本文将深入探讨如何在VS2013环境下使用C# WinForm来实现这一功能。 首先,`PreFilterMessage`方法是...

    C# 在窗体中按回车键依次变换控件焦点

    4. **焦点转移逻辑**:在`KeyDown`事件处理程序中,检查按下的是回车键。如果是,你需要找到当前具有焦点的控件并确定其下一个应获取焦点的控件。这可以通过遍历窗体上的所有控件,比较它们的TabIndex属性来实现。...

    winform不获取焦点的右下角提示窗体

    在Windows Forms(Winform)开发中,创建一个不获取焦点且能像QQ那样在屏幕右下角滑动显示的提示窗体是一项常见的需求。这样的设计能够实现非侵入式的用户通知,让用户在不中断当前操作的情况下接收信息。下面将详细...

    Winform自动按键小工具 1.0.rar

    Winform自动按键小工具可以实现自动单击,按键等功能,源代码可以修改一下,做成小的按键精灵,用来作一些重复的事情 。注意事项1、开发环境为Visual Studio 2013,使用.net 4.0开发。

    winform小工具:监控哪个窗体获取焦点

    监控当前那个程序获取了焦点 是弹窗定位 游戏突然跳回桌面 程序失去焦点的问题 的解决助手

    WinForm中快捷键与组合按键的设置方法

    最后,WinForm的AcceptButton和CancelButton属性也可以关联到特定的按钮,使得Enter键会触发AcceptButton的Click事件,Esc键会触发CancelButton的Click事件,无需额外编写代码。 综上所述,WinForm提供了灵活的方式...

    不获取焦点的虚拟键盘-Winform

    在Windows Forms(Winform)开发中,创建一个不获取焦点的虚拟键盘是一种常见的需求,尤其在设计触摸设备应用或者需要安全输入密码时。这个“不获取焦点的虚拟键盘”允许用户通过点击屏幕上的按键来输入文本,而无需...

Global site tag (gtag.js) - Google Analytics