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好像是管这个的,可自定义控件里没这个选项。。。求助求助,谢了

0

1个回答

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

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#做上位机时自定义了一个控件,控件对键盘方向键做出反应,但我这个按方向键不好使,按键事件进不去,就好像焦点没找对一样,求助大神啊
[img=https://img-bbs.csdn.net/upload/201510/06/1444131112_11909.png][/img]rn控件主要是想做一个显示速度的条,当按↑时格子文本框变色rnusing System;rnusing System.Collections.Generic;rnusing System.ComponentModel;rnusing System.Drawing;rnusing System.Data;rnusing System.Linq;rnusing System.Text;rnusing System.Windows.Forms;rnrnnamespace SpeedBarrnrn public partial class SpeedBar : UserControlrn rn private Int16 SpeedBarflag = 0;rn public SpeedBar()rn rnrn InitializeComponent();rn rnrn private void SpeedBar_KeyDown(object sender, KeyEventArgs e)rn rn Keys key = e.KeyCode;rnrn switch (key)rn rn //↑按键rn case Keys.Up:rn SpeedBarflag ++;rn if(SpeedBarflag >5)rn SpeedBarflag=5;rn if (SpeedBarflag >= 1 && SpeedBarflag<6)rn rn switch(SpeedBarflag)rn rn case 1:rn SpeedBar1.BackColor=System.Drawing.Color.Red;rn break;rn case 2:rn SpeedBar2.BackColor=System.Drawing.Color.Yellow;rn break;rn case 3:rn SpeedBar3.BackColor=System.Drawing.Color.Green;rn break;rn case 4:rn SpeedBar4.BackColor=System.Drawing.Color.Blue;rn break;rn case 5:rn SpeedBar5.BackColor=System.Drawing.Color.Black;rn break;rn rn rn rn if (SpeedBarflag > -5 && SpeedBarflag< 1)rn rn rn switch(SpeedBarflag)rn rn case -4:rn SpeedBarminus5.BackColor=System.Drawing.Color.White;rn break;rn case -3:rn SpeedBarminus4.BackColor=System.Drawing.Color.White;rn break;rn case -2:rn SpeedBarminus3.BackColor=System.Drawing.Color.White;rn break;rn case -1:rn SpeedBarminus2.BackColor=System.Drawing.Color.White;rn break;rn case 0:rn SpeedBarminus1.BackColor=System.Drawing.Color.White;rn break;rn rn rn break;rnrn //↓按键rnrn case Keys.Down:rn SpeedBarflag --;rn if(SpeedBarflag <-5)rn SpeedBarflag=-5;rn if (SpeedBarflag <= -1 && SpeedBarflag>-6)rn rn switch(SpeedBarflag)rn rn case -1:rn SpeedBarminus1.BackColor=System.Drawing.Color.Red;rn break;rn case -2:rn SpeedBarminus2.BackColor=System.Drawing.Color.Yellow;rn break;rn case -3:rn SpeedBarminus3.BackColor=System.Drawing.Color.Green;rn break;rn case -4:rn SpeedBarminus4.BackColor=System.Drawing.Color.Blue;rn break;rn case -5:rn SpeedBarminus5.BackColor=System.Drawing.Color.Black;rn break;rn rn rn rn if (SpeedBarflag < 5 && SpeedBarflag> -1)rn rn switch(SpeedBarflag)rn rn case 4:rn SpeedBar5.BackColor=System.Drawing.Color.White;rn break;rn case 3:rn SpeedBar4.BackColor=System.Drawing.Color.White;rn break;rn case 2:rn SpeedBar3.BackColor=System.Drawing.Color.White;rn break;rn case 1:rn SpeedBar2.BackColor=System.Drawing.Color.White;rn break;rn case 0:rn SpeedBar1.BackColor=System.Drawing.Color.White;rn break;rn rn rn break;rn rn rnrn rnrn rn rnrn一直想不通为啥按键无效,一直找不到焦点一样,Form有一个keypreview好像是管这个的,可自定义控件里没这个选项。。。求助求助,谢了rn
如何对当前窗体的按键事件做出反应?
如题。
大神 求助 工具箱控件
本人最近为了尝鲜,在自己的电脑上装了win8系统,由于本人搞程序设计,也在电脑上装了vb6.0 ,但第一次打开工程的时候出现了,库文件加载失败问题,看了一下是mscomctl.ocx没注册问题,然后我又注册了这个控件(我注册了n次),然后打开发现好了,可是许多控件却重复了。狠狠地郁闷啊!如图:[img=https://img-bbs.csdn.net/upload/201305/01/1367408539_585220.png][/img]rn求大神帮忙,谢谢
控件的按键事件-------急急急! :(
本人想对一个自定义的控件的按键事件编程,可将该控件放到窗体上,对其KeyDown事件定义了事件代码,可是却不响应方向键LEFT、RIGHT、UP、DOWN,请问各位高手是什么原因?rnrnmyControl.KeyDown+= new System.KeyEventHandler (myControl_KeyDown);rnrnrnprivate void myControl_KeyDown(object sender, System.KeyEventArgs e)rnrn if(e.KeyCode == Keys.Left)rn rn ....rn rn if(e.KeyCode == Keys.Right)rn rn ......rn rn
python+pyqt5 做上位机界面
适用于参考学习,下载可以直接运行 __author__ = 'Sunrise' from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(976, 568) self.verticalGroupBox_3 = QtWidgets.QGroupBox(Form) self.verticalGroupBox_3.setGeometry(QtCore.QRect(10, 460, 101, 101))
wpf做上位机时窗口界面嵌套自定义控件串口问题
wpf中窗口界面上嵌套了一个用户自定义控件(设置串口用的),窗口界面上按钮发出命令调用自定义控件代码中的函数方法,串口却是断开的,[img=https://img-bbs.csdn.net/upload/201902/12/1549958005_621910.png][/img],圈出部分是自定义控件
C# 控件继承文题 求助大神
public class Newbutton:Buttonrn rn Button button = new Button() ;rn public void button_Click(object sender, EventArgs e)rn rn MessageBox.Show(""); rn rn rn rnrn想继承原有控件再添加事件,封装成类,要怎么写才能正确的把事件继承啊rn就是,添加 newbutton这个按钮,点击弹出这个box;
求助自定义模版控件
------------------------------|rn| | |rn| |----------------------|rn| | |rn------------------------------|rn模版样式如上,是要从 工具箱中托动控件(自定义的 模版 控件)界面就如上显示(类似表格,好像就是表格)rn表格中的单元 格中可以拖动工具箱中其他控件放入其中。如何实现?
怎样对C#中的控件自定义
求大师们指教下!对c#的控件自定义!比如TabControl!
求助:我的电脑为什么开机时进不去!
我的电脑为什么开机时进不了!显示屏黑屏!主机上的绿灯和红灯亮着!rn就是进不了WIN98的页面!而且上一次关机时很正常没有异常!rn系统是刚装好的!后来把主机箱拆开看了没事!rn这时在把主机箱装好把线接上重新开机后切正常 !rn请问这是那里出错了!我怕下一次开机时还会出现这种情况!rn请高手们指教一下!
如何做出一个新的控件????
我想做一个控件,功能就相当于把BCB自带的rnDriveListBoxrnDirectoryListBoxrnFileListBoxrn这三个控件集合在一个控件当中,rn请大家提供一下方法和思路,谢谢了
c#自定义GroupBox控件
c#自定义GroupBox控件,可自定义边框样式颜色等。
C#自定义DataGridView控件
实现按回车时左右移动,当到达最后一个可编辑的单元格时换行到下行中第一个可编辑的单元格。到达最后一行最后一个可编辑单元格时保存原位。可实现独立的DataGrieView和与其他控件一起使用的界面
C#自定义时钟控件
该程序定义了一个Clock(钟)父类,继承该父类定义了两个子类NumberClock(数字钟)和GraphClock(模拟钟),通过该程序可以清楚地理解面向对象的概念,包括:封装、继承、多态、事件等,是很好地学习面向对象程序设计、自定义控件的好例子。
C#自定义IP控件
C#封的自定义IP控件,功能完善。
C# 一些自定义的控件
内含一些自定义的C#控件,有demo,有源码,很不错的控件库,虽然不是很多,但是至少提供了一个学习的方法!
c#自定义Imagelist控件
由于vs2008自带的ImageList不够强大,它存放的图片最大只是width=256,height=256,我想保存一张width为700图片都不行!所以我决定自定义一个ImageList控件,但是我不会,哈哈!请高手给我一些思路和关键代码,在此先感谢啦!哈哈!
自定义c# openfileDialog 控件
通过windows控件组合实现一个OpenFileDialog。能实现OpenFileDialog的基本功能。VS2008编写的!是我实习的时候做项目是写的。。。“如果一个人要是可以自己手动写一个openfileDialog那么他的C#也就算入门了”,我们项目组长说的。
C#自定义tab控件
C#自定义tabcontrl控件,可实现透明背景,tabpage实现多种样式,美观,功能强大。
c# 自定义webTextBox控件
自定义webTextBox
C# 自定义TrackBar控件
自定义TrackBar控件 自定义TrackBar控件 自定义TrackBar控件
C#自定义线控件
用C#自定义一个像VB中的line控件,rn这样在窗体加载时,能够对它进行拉伸和移动!
C#自定义Button控件
rn大家好!如下图所示:Button上能够显示1,2,3....和 A、B、C、D txt属性。由于我还是新手,从来没自定义过控件,所以在此向大家求助:我想自定义一个Button控件实现这样的效果该怎么做?rn 或者 要是对系统自带的Button控件修改成这样该怎么修改? rn 感激不尽!rn[img=https://img-bbs.csdn.net/upload/201403/21/1395366685_614958.png][/img]
C# 自定义缩略图控件
C#写的一个自定义控件 。 作用:传入一个图片数组和图片显示大小,显示在控件上。
WPF-嵌套控件 按键事件顺序
Grid_PreviewKeyDown_1 TextBlock_PreviewKeyDown_1 TextBlock_KeyDown_1 Grid_KeyDown_1 Grid_PreviewKeyUp_1 TextBlock_PreviewKeyUp_1 TextBlock_KeyUp_1 Grid_KeyUp_1
如何让程序对键盘事件做出反应?
手上资料有限,希望能够告诉;比如当按下回车键,就能触发按钮的click事件
求助精通DevExpress控件的大神。
[code=csharp]public class DxperienceXtraGridLocalizationCHS : GridLocalizerrn rn public override string GetLocalizedString(GridStringId id)rn rn switch (id)rn rn case GridStringId.customFilterDialogC:rn return "等于=";rnrn case GridStringId.CustomFilterDialogConditionNEQ:rn return "不等于<>";rnrn case GridStringId.CustomFilterDialogConditionGT:rn return "大于>";rnrn case GridStringId.CustomFilterDialogConditionGTE:rn return "大于或等于>=";rnrn case GridStringId.CustomFilterDialogConditionLT:rn return "小于<";rnrn case GridStringId.CustomFilterDialogConditionLTE:rn return "小于或等于<=";rnrn case GridStringId.CustomFilterDialogConditionBlanks:rn return "空值";rnrn case GridStringId.CustomFilterDialogConditionNonBlanks:rn return "非空值";rnrn case GridStringId.CustomFilterDialogConditionLike:rn return "包含";rnrn case GridStringId.CustomFilterDialogConditionNotLike:rn return "不包含";rn[/code]rnrncustomFilterDialogC rnCustomFilterDialogConditionNEQrnCustomFilterDialogConditionGTrnCustomFilterDialogConditionGTErnCustomFilterDialogConditionLTrnCustomFilterDialogConditionLTErnCustomFilterDialogConditionBlanksrnCustomFilterDialogConditionNonBlanksrnCustomFilterDialogConditionLikernCustomFilterDialogConditionNotLikern 在DevExpress V7.1版本下面可以使用 但是在V12.2下面没有这几个属性了 rn求问在12.2下面是用那几个代替的。
拦截 mouse 对控件的双击,不让控件有反应?
-
winform做上位机软件如何?
大部分上位机软件基本上都是mfc做的,想问问winform做上位机软件性能如何?rnrn基本上的流程是:rnrn串口上来的数据,略为处理后显示波形,然后储存至服务器端的数据库。数据库操作可能比较频繁,一秒每次那个样子。rnrn听说winform的串口代码不是很成熟,大家觉得如何啊?
关于用键盘上的方向键来改变控件焦点的问题,按左方向键先...再回到上一个控件,按右方向键....
要求是这样的:rn form上有一些edit和combobox和其它几个输入的控件,比如在edit中时,按左方向键(VK_LEFT)时,先检查光标是否是否已经走到了edit的左边头头,如果是,则输入的焦点回到上一个控件(即shift+tab的功能),else 则向左移一格(即原有的功能),右移也一样。rnrn 谢谢大家!我对向左或向右移一格不知用什么方法与属性来实现。
Cygwin中vi编辑器方向键和Backspace键不好使的解决方法
1.在当前用户目录下创建.virc文件 2.修改.virc文件(如果没有就创建) vi .virc 添加以下内容 set nocp set backspace=start,indent,eol 保存退出 :wq
我想对一个控件的click和dblclick事件做出不同反应,有什么办法
我想对一个控件的click和dblclick事件做出不同反应,有什么办法rn现在无论dblclick和click都是click事件
紧急求助!!(c#控件)
还是前些日子的calendar问题,现在控件基本功能已经成形,但是有一个最基本的问题需要解决就是如何使calendar(web control)在render的时候自动调到下一个月或上一个月,因为我想做一个双月显示的日历控件,基本思想就是创建两个calendar实体,但现在始终找不到方法让其中一个实体自动初始化为下个月或上个的日期。我试过重载onVisibleMonthChange(),但因为找不到相关的方法,所以没有实现。rn直接利用calendar控件到底有没有可能实现上述功能呢?还是我必须自己写一个日历控件???rn希望各位dx不吝赐教!!!(做不出来期末过不了了)rn分数还可以另加(当然我现在也没多少分 ^_^)
C#控件求助
[img=https://img-bbs.csdn.net/upload/201712/11/1512966854_240857.jpg][/img] 请问这是C#什么控件
关于控件的反应
比如我有一颗按扭ID号为10,我按它,rnswitch (LOWORD (cid))rn rn rn case 10:rn SetWindowTextA(c12, _T("edit box")); rn break;rn上边这个反应会马上把控件ID号C12的窗体文本改为 EDIT BOXrnrnrn同样我在一个ID号为11的组合框上勾选一个COMBOBOX项,rnswitch (LOWORD (cid))rn rn case 11:rn rn GetWindowTextA(c11,buf,sizeof(buf));rn SetWindowTextA(c22,buf);rn break;rnrnID号C22的窗体文本不是马上变成组合框上取到的文字,我要在C22窗体上点一下C22的文字才改变rnrnrn是不是有甚么更新的涵数的???同样是控件的动作,为何反应不同rn rn break;
自定义一个ToolTip控件?
功能要求:rn1.箭头可以随所指向的对象的位置的变化而在箭头所在的边框滑动;rn2.箭头可以延长或缩短;rn
一个C#自定义WinForm时钟控件
一个C#自定义WinForm时钟控件一个C#自定义WinForm时钟控件一个C#自定义WinForm时钟控件一个C#自定义WinForm时钟控件一个C#自定义WinForm时钟控件
如何做出这种控件?
就像QQ一样的,做一个按钮,然后当你鼠标放上去的时候,旁边的东西就出来了
谁能做出这样的控件?
vb右面的属性框怎么做?我要用!!要求有源代码,50分求购!(以后加分)
▼发现treeview控件的一个缺陷▼
现在一个treeview控件中有10个子节点,我用下面的语句:rnrnfor( int i = 0 ; i < treeview.Nodes.Count ; i++ )rnrn TreeNode nodeChild = node.Nodes[i];rn nodeChild.Remove();rnrnrn执行完陈以后发现还剩下5个节点,为什么那?rn因为删除一个节点后,后面的节点会自动移动到上面来,而且Index减1rn所以这个节点就逃过了被删除的命运。rn以此类推,只能删除一半的节点rnrn鄙视这个破控件
相关热词 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd c# 操作sql视图

相似问题

1
C#PerformClick可虚拟按钮,但按钮的DOWN和UP怎么表示模拟
2
有没有c#写上位机的教程,写上位机应该不需要知道太多吧,
2
C# 用modbus tcp协议,怎么做一个上未将与多个下位机通讯
2
C#中的serialport.Write与MSCOMM控件的put_output有什么区别?
0
C#写一款ip摄像头上位机,用RealPlayWnd.Handle;为啥是无效的句柄
2
c#串口通信中上位机测试数据组帧
2
怎么把上传的数据转接到另一个程序中去,不动原来的上位机程序呢?
2
请问上位机上如何对下位机c语言写的浮点数进行解包还原得到原始的发送数据?
1
单片机的采集程序采集到浮点数了,然后通过串口传输到上位机的串口控件上
2
怎么在上位机中通过串口控件的内存对发送的数据还原成原始数据?
1
串口通讯中上位机向下位机回发的信息,回发数据是怎么被下位机接受的?
1
上位机跨程序不打开端口如何检测上位机是否给下位机回发了数据包?
3
上传数据到上位机以后,下位机是不是不再保持发送的数据?
2
怎么在一个第三方程序中绕过上位机的端口控件直接往下位机送数据?
1
怎么在第三方的程序中转接来自上位机的串口控件中的写入流
2
请问下位机通过串口线连接的上位机,是怎么和上位机进行日期的同步的
2
小白用c#做上位机,求大神指点
1
c#串口编程后硬件换成网口的问题
3
关于c#做上位机串口接收数据的问题,求大神讲解
4
小白用c#做上位机,求指点啊