c#-C#做上位机时自定义了一个控件,控件对↑键做出反应,发现方向键不好使,按键事件进不去,求助大神!

问题描述

C#做上位机时自定义了一个控件,控件对↑键做出反应,发现方向键不好使,按键事件进不去,求助大神!


控件主要是想做一个显示速度的条,当按↑时格子文本框变色
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SpeedBar
{
public partial class SpeedBar : UserControl
{
private Int16 SpeedBarflag = 0;
public SpeedBar()
{

        InitializeComponent();
    }

    private void SpeedBar_KeyDown(object sender, KeyEventArgs e)
    {
        Keys key = e.KeyCode;

        switch (key)
        {
                //↑按键
                case Keys.Up:
                SpeedBarflag ++;
                if(SpeedBarflag >5)
                       SpeedBarflag=5;
                if (SpeedBarflag >= 1 && SpeedBarflag<6)
                {
                    switch(SpeedBarflag)
                    {
                        case 1:
                            SpeedBar1.BackColor=System.Drawing.Color.Red;
                            break;
                        case 2:
                            SpeedBar2.BackColor=System.Drawing.Color.Yellow;
                            break;
                        case 3:
                            SpeedBar3.BackColor=System.Drawing.Color.Green;
                            break;
                        case 4:
                            SpeedBar4.BackColor=System.Drawing.Color.Blue;
                            break;
                        case 5:
                            SpeedBar5.BackColor=System.Drawing.Color.Black;
                            break;
                    }
                }

                if (SpeedBarflag > -5 && SpeedBarflag< 1)
                {

                    switch(SpeedBarflag)
                    {
                        case -4:
                            SpeedBarminus5.BackColor=System.Drawing.Color.White;
                            break;
                        case -3:
                            SpeedBarminus4.BackColor=System.Drawing.Color.White;
                            break;
                        case -2:
                            SpeedBarminus3.BackColor=System.Drawing.Color.White;
                            break;
                        case -1:
                            SpeedBarminus2.BackColor=System.Drawing.Color.White;
                            break;
                        case 0:
                            SpeedBarminus1.BackColor=System.Drawing.Color.White;
                            break;
                    }
                }
                break;

                //↓按键

                case Keys.Down:
                SpeedBarflag --;
                if(SpeedBarflag <-5)
                       SpeedBarflag=-5;
                if (SpeedBarflag <= -1 && SpeedBarflag>-6)
                {
                    switch(SpeedBarflag)
                    {
                        case -1:
                            SpeedBarminus1.BackColor=System.Drawing.Color.Red;
                            break;
                        case -2:
                            SpeedBarminus2.BackColor=System.Drawing.Color.Yellow;
                            break;
                        case -3:
                            SpeedBarminus3.BackColor=System.Drawing.Color.Green;
                            break;
                        case -4:
                            SpeedBarminus4.BackColor=System.Drawing.Color.Blue;
                            break;
                        case -5:
                            SpeedBarminus5.BackColor=System.Drawing.Color.Black;
                            break;
                    }
                }

                if (SpeedBarflag < 5 && SpeedBarflag> -1)
                {
                    switch(SpeedBarflag)
                    {
                        case 4:
                            SpeedBar5.BackColor=System.Drawing.Color.White;
                            break;
                        case 3:
                            SpeedBar4.BackColor=System.Drawing.Color.White;
                            break;
                        case 2:
                            SpeedBar3.BackColor=System.Drawing.Color.White;
                            break;
                        case 1:
                            SpeedBar2.BackColor=System.Drawing.Color.White;
                            break;
                        case 0:
                            SpeedBar1.BackColor=System.Drawing.Color.White;
                            break;
                    }
                }
                break;
        }
    }

}

}
一直想不通为啥按键无效,一直找不到焦点一样,Form有一个keypreview好像是管这个的,可自定义控件里没这个选项。。。求助求助,谢了

解决方案

这个原因太简单了,因为你的控件没有获取到焦点,你这样的功能,一般要使用钩子,否则一失去焦点,功能就失灵了,除非你保证焦点总在这个程序的这个控件上

时间: 2024-08-07 21:36:57

c#-C#做上位机时自定义了一个控件,控件对↑键做出反应,发现方向键不好使,按键事件进不去,求助大神!的相关文章

求助大神 用httpclient获取网页内容,然后筛选内容做一个查询

问题描述 求助大神 用httpclient获取网页内容,然后筛选内容做一个查询 网页内容为很多用户信息 通过用户的特定信息 查询显示用户的全部信息.. 解决方案 先把数据采集回来,然后存到数据库,最后直接查询数据库即可. 解决方案二: 获取页面返回内容,然后用正则表达式来解析内容 解决方案三: 首先获取页面返回内容,再用正则表达式来解析你需要的用户内容,然后存到数据库,最后查询数据库即可.

oracle自定义函数的问题,求助大神啊

问题描述 oracle自定义函数的问题,求助大神啊 在oracle中定义一个函数,用来实现从身份证号中提取出生日期并将提取结果保存到指定表中.提示:提前创建一个至少包含(身份证 varchar2,出生日期 date)的二维表 小白初学oracle,这个问题做了一下午还没弄明白,各路大神给指点一下啊 解决方案 oracle自定义函数oracle 自定义函数oracle 自定义函数入门 解决方案二: 例:表1, 身份证:xxxxxx20150810xxxx ,求出生日期update 表1 set 出

设计-关于一个单词匹配的题目,得不到想要的结果,贴出源程序,求大神帮忙~~~

问题描述 关于一个单词匹配的题目,得不到想要的结果,贴出源程序,求大神帮忙~~~ #include#include#include#include#includeint IsOneCharDifferent(char array[255]);int IsIt(char array[255]);int IsMoreOrLessOneChar(char array[255]);//************************************************************

类似资源管理器的这种界面是怎么做的,求助大神!!!

问题描述 类似资源管理器的这种界面是怎么做的,求助大神!!! 解决方案 左边treeview,右边是列表控件 解决方案二: SpliiterPanel控件,左侧嵌套TreeView,右边用PropertyGrid. 解决方案三: 用vc实现资源管理器功能 解决方案四: 用vc实现资源管理器功能

有关使用cult3d制作一个机械虚拟拆装系统的问题!求助大神 望不吝赐教。。。

问题描述 有关使用cult3d制作一个机械虚拟拆装系统的问题!求助大神 望不吝赐教... 软件中自带了鼠标左键点击触发事件,我制作的效果是:点击了需要拆离的零件,然后被点击的零件会按照我所设定的位移距离,旋转角度和时间离开整体.现在我想问的是能不能将鼠标左键点击触发的形式改为鼠标左键点住零件并拖动离开整体?因为软件里不具备这个功能,要用java写?

注释-求助大神。按教程一步步做的Android记事本打不开,直接就崩溃掉了。。。谢谢,大神快来

问题描述 求助大神.按教程一步步做的Android记事本打不开,直接就崩溃掉了...谢谢,大神快来 如下图所示,当我添加上两个箭头所指向的语句和对应的方法的时候,程序就会直接崩溃. 如果我注释掉这些,程序就可以正常运行. log在下面,程序第59行是第一个红箭头所指"path"这一行,是不是这个path出问题了?望大神解答,谢谢. 下面还有一些代码 解决方案 http://www.jikexueyuan.com/course/359.html 解决方案二: 是这个,可是做到图片那一不就

求助大神一个sql 百分比的问题

问题描述 求助大神一个sql 百分比的问题 select a.contCLng((select count(*) as cs from [order] b where b.order_cont like '*'+a.cont+'*'))/CLng((select count(*) from [order] b)) from [order_cont] a 这个输出不出来每一行除完之后的数 求大神帮忙看看这个 解决方案 SELECT T1.ContSUM(IIF(T2.Order_Cont=T1.C

ssh-为什么这里只能有一个实体bean类,我再加一个就是错的呢?求助大神

问题描述 为什么这里只能有一个实体bean类,我再加一个就是错的呢?求助大神 解决方案 大神们求助啊,这是为什么啊?第二种运行时就会报错 解决方案二: 或许不是用value 解决方案三: 找到原因了,各种百度还是找到问题所在了,class被我弄成老版本的LocalSessionFactoryBean去了,改成这种就OK了class="org.springframework.orm.hibernate4.annotation.AnnotationSessionFactoryBean",算

获取网页数据-求助大神帮忙 获取一个网页数据

问题描述 求助大神帮忙 获取一个网页数据 https://www.indovision.tv/schedule/table 获取这个网页的 AXN - 154频道 3月21号的节目数据 解决方案 发个HTTP请求,就可以拿到返回的页面数据,然后你就可以当xml来解析.