找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 351|回复: 4

小议winForm的热键

[复制链接]
发表于 2009-3-16 21:02:34 | 显示全部楼层 |阅读模式 IP:江苏扬州
winForm 应用开发,大都离不开winFrom + toolBar/Menu + some other Controls的模式。
    其中快捷键的处理,我5年前就遇到了,现在发现还有人犯这个错误,觉得着实需要讲一下:很多输入型控件都支持常用的Ctrl + C, Ctrl + V, Ctrl + X等热键,WinForm 在KeyPreview=true时也会捕捉这些快捷键被触发的Windows消息。

    如果winFrom/ToolBar/Menu/Other Control这些控件,对快捷键都有处理,上级控件只要设置e.SuppressKeyPress属性值(Boolean 类型),就可以选择是否把key down消息传递给下级控件。这里的上下级是按控件的包含关系来说的。如winForm上有一个TextBox,winForm为上级控件,TextBox为下级控件。
    唯一的例外是ToolBar/Menu控件,它最先截获消息,而且默认情况下,是它触发后,不再把消息往别的控件传送!
    也就是说一旦快捷键设置在Menu上,除了相应的menuItem外,其他控件(包括winForm)将都收不到快捷键被触发的消息。这也是最容易导致bug的地方。为解决这个问题,我一般是在menuitem.click的处理事件中通过sendkeys.send()方法,把消息继续传递下去。
    http://files.cnblogs.com/ColorSky/shortKey.zip
    我做了一个事列程序,只在一个winForm上放了 menu 和 textbox控件,其中一个menuItem.shortkey属性设置为Ctrl + V.在menuItem.click和winForm.Keydown事件中都加上Console.WriteLine()。
    示例程序中很明显的说明了这个问题,outPut窗口的输出结果是:
    Menu item click event is triggered!
    Form Key Down event is triggered !
发表于 2009-10-29 13:05:04 | 显示全部楼层 IP:日本
顶.支持,路过.....
回复

使用道具 举报

发表于 2009-11-25 15:05:04 | 显示全部楼层 IP:天津
一个个全都骑到老大头上来了... 我也来骑一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 19:20 , Processed in 0.273470 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表