永发信息网

C# 关于按钮和键盘的问题

答案:2  悬赏:70  手机版
解决时间 2021-02-06 04:30
我用C# 语言编写了一个计算器,“=”键是Button17,现在想按enter键等价于按“=”,也就是enter键关联按钮button17,别的按扭和键盘都用代码写好了,而且都能用。唯独enter键关联不了,后来改用设置窗体form1的accetpbutton属性=button17,但还是不起作用。按ernter键只会触发具有焦点的按钮,焦点会随着鼠标的点击停留在最后一个点击的按钮上。我想问3个问题。第一在没有定义enter键事件的情况下,为什么enter键会触发具有焦点的按钮,是系统编写的代码吗? 第二: 焦点能否取消,使每个按钮都不具有焦点,或者让焦点只停留在某一个固定按钮上? 第三:我设置的accetpbutton=button17为何不起作用?第四:还有空格键也是默认执行具有焦点的按钮,在哪定义的? 请高手大师百忙之余帮我解答下,在下不胜感激,提前谢过。

大家好,经过长时间的研究终于研究出来了,windows消息机制和应用软件处理机制的完美解释。我们每按下一个键盘,首先由键盘驱动程序翻译成windows虚拟键码,再由windows打包成固定格式的消息(有很多种类型如:WM_KEYUP、WM_KEYDOWN等等)放入windows消息列队,之后发往对应程序的消息列队,然后再由应用程序的消息处理机制(这个处理机制是一直循环的,不停接受消息处理消息、只到程序退出,循环原理是一系列循环函数)进行处理,处理分为两个阶段,第一是预处理由PreProcessMessage函数处理,第二是处理由WnProc函数处理。这两个阶段十分复杂,这两个函数是调用一些列的函数处理,我们的方向键、Enter键等等就是在预处理阶段被处理了,因为这个处理机制是被封装好的,所以要想我们的Enter键能够完成我们定义的快捷键效果,那就必须在预处理阶段找到这个处理函数,并拦截重写这个虚方法(函数)。
最佳答案
我试着回答你以下几个问题:
1、按下Enter会触发具有焦点的按钮,这个没什么好解释的,这是TX内部的写法,你也可以写你自己需要的控件,取消这一功能

2、由于你单击其他按钮后,焦点停留在你点击的那个按钮上,窗体绑定的按钮将失效,我想到的方法就是在每个点击的按钮里写上 窗体绑定的按钮.Focus()

3、失去焦点当前不起作用了

4、也许空格和Enter都属于空白字符吧

反正你的核心问题就是为什么绑定的按钮失效:
要么当你点击其他按钮的时候让你点击的按钮失去焦点
要么在每个按钮的点击事件里都加上 窗体绑定的按钮.Focus() 强制获取焦点
全部回答
几种办法: 1.把按钮事件里backspace的代码复制到按钮的事件里 2.使用c#模拟按键 sendkeys.send("{f1}");【具体使用方法到网上找】 3.使用win api键盘钩子实现。【具体使用方法到网上找】
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
老地方炒货店地址在什么地方,我要处理点事
万树园商行在什么地方啊,我要过去处理事情
什么数的立方等于0.65
河南工业大学校园环境怎么样啊? 工商管理专
天葬的意思是什么啊?知道的请说下!
亮的繁体字是什么
180012基金 怎样 可以定投吗
苏可超市地址在什么地方,我要处理点事
维C地址有知道的么?有点事想过去
(14分)据报道,某竹木制品厂,去年改制为竹
120SSD固体硬盘好还是4t的硬盘好
红点颜雌性带一根红毛能卖多少钱
现在有很多女孩结婚前就已经不是处女了,你要
佳音批发超市地址在什么地方,我要处理点事
宏能家电NO.浙B.216地址有知道的么?有点事想
推荐资讯
弱弱的问一下!男生如果秃头女生或女生的父母
烧银的意思是什么啊?知道的请说下!
特里萨修女生于马其顿一个富裕的家庭。18岁远
蜜语超市东城店地址在什么地方,想过去办事
一水桶倒扣在水池中说往下按感觉用力越大这种
太原火车南站地址在哪,我要去那里办事
铜条发晶属于哪种颜色的水晶
五星红洗衣这个地址在什么地方,我要处理点事
钢芯铝绞线最大截面是多少
突立的意思是什么啊?知道的请说下!
香肠加入了其它不明物质烘干后是空的这是什么
泳衣钢托的好吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?