找回密码
 立即注册

QQ登录

只需一步,快速开始

cpzmckk

银牌会员

2

主题

7

帖子

3024

积分

银牌会员

积分
3024

活字格认证

最新发帖
cpzmckk
银牌会员   /  发表于:2012-7-17 10:54  /   查看:9060  /  回复:9
我在画面的 [MultiRow6.0]  有一列日期项目dateTimePickerCell,窗体的按钮中已使用了F4快捷键,我的问题是,为什么我点击日期的下拉列表的时候总是触发按钮的时间呢,日期的下拉列表根本弹不出来。麻烦指点一下,谢谢。

9 个回复

倒序浏览
wedy.wang
初级会员   /  发表于:2012-7-17 11:48:00
沙发
回复 1楼cpzmckk的帖子

是不是你在输入F4键的时候,焦点并没有落在MulitRow当中的某个DateTimePickerCell上面,而是在窗体的按钮上面。你能不能创建一个简单的工程来重现你的问题,方便我们帮助你?
回复 使用道具 举报
cpzmckk
银牌会员   /  发表于:2012-7-17 13:22:00
板凳
您好,例子上传了,麻烦你看一下。现象就是:画面运行后,直接用鼠标点击网格的日期Cell的小三角,这个时候触发了功能按钮的事件,应该是弹出日期列表才对。谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
wedy.wang
初级会员   /  发表于:2012-7-18 09:34:00
地板
回复 3楼cpzmckk的帖子

你好,我查看了你写的代码,或许你可以将代码改改来避免这个问题。下面的我对这个问题的一些解释:
首先,你处理了Form的KeyDown事件,并且将e.Handle设置为True,这样以来,Form的所有子控件,如果他依赖KeyDown事件来触发某个行为(F4打开日期列表),这个行为就会无效(日期列表无法打开)。如果e.Handle为False,不会有这样的问题。
这是微软的设计,你同样可以往Form上面放一个.net framework 的DateTimePicker控件来重现这个问题,在DateTimePicker控件当中点击F4,日期列表同样打不开,如果你将E.handle设置为False,就好了。唯一和MulitRow不同的地方是鼠标点击下拉按钮,MulitRow也会进入KeyDown事件处理函数,而DateTimePicker不会,这是因为MulitRow内部是把点击下拉按钮当F4来处理的,为了打开下拉列表。

因此,我建议将e.handle不要设置为true,而是设置为false,否则你在Form上面放的其他控件可能也会受到影响。这样是否能解决你的问题?
回复 使用道具 举报
cpzmckk
银牌会员   /  发表于:2012-7-18 10:39:00
5#
您好,非常感谢您耐心的回复。我现在的问题是:无论我将e.Handle设置为True或者false,我点击Cell的日期项目小三角为什么首先触发了我的F4按钮的事件,而不是触发日期的下拉列表。我在画面上放一个.net framework 的DateTimePicker控件点击小三角的时候,就不存在这个问题。
回复 使用道具 举报
wedy.wang
初级会员   /  发表于:2012-7-18 10:56:00
6#
回复 5楼cpzmckk的帖子

你说的很对,正如我所说:“唯一和MulitRow不同的地方是鼠标点击下拉按钮(小三角),MulitRow也会进入KeyDown事件处理函数,而DateTimePicker不会,这是因为MulitRow内部是把点击下拉按钮当F4来处理的,为了打开下拉列表”。
因此,这里存在的不同在于,你将e.handle设置为false,虽然你的F4按钮事件会处理,但同时日期下拉列表也会打开,而e.handle为true,日期下拉列表是打不开的。
另外,你可以将你的实际场景再详细描述一下,比如在你的KeyDown处理函数当中,你需要做什么的操作,这时候希望MultiRow是什么样的状态,等等。目前看来这样的表现是我们的内部设计,非常抱歉给你带来不便,我们只能看你的实际场景,看有没有其他解决方式。
回复 使用道具 举报
cpzmckk
银牌会员   /  发表于:2012-7-18 11:36:00
7#
我们这次开发的系统画面下方都是一些功能按钮并且都有相
应的快捷键,如图所示是其中的一个画面样例。点击画面中网格的“尝味期限”项目的下拉列表,总是触发“保存”的按钮事件。麻烦问一下还有什么办法屏蔽掉您说的那个Cell内部keydown事件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
wedy.wang
初级会员   /  发表于:2012-7-18 13:47:00
8#
回复 7楼cpzmckk的帖子

谢谢你更进一步说明了你的问题。
很遗憾的告诉你,Cell内部这个KeyDown无法屏蔽。
或许你能通过下面任意两种方式绕过这个问题:
方式1: 对于外面这些按钮,处理KeyUp事件,而不要处理KeyDown。
方式2:对于外面这些按钮,更换为F4之外的其他的快捷键,避免冲突。
回复 使用道具 举报
cpzmckk
银牌会员   /  发表于:2012-7-19 09:14:00
9#
非常感谢您耐心的回答,知道原因了我就再想其他办法解决吧,再次感谢!!!
回复 使用道具 举报
baifyoa8oDo
注册会员   /  发表于:2012-7-24 17:30:00
10#

中仪在线www.yibiao.cn

中仪在线[url=http://www.yibiao.cn]www.yibiao.cn[/url]主要为仪表企业提供新闻咨询、市场分析、产品信息、技术资料、专家问答、人才招聘等服务,同时提供网站建设、网站推广、网上贸易工作等行业电子商务营销解决方案。

旗下网站有中缆在线[url=http://www.dianlan.cn]www.dianlan.cn[/url];中阀在线[url=http://www.famen.cn]www.famen.cn[/url];中国电气[url=http://www.dianqi.cn]www.dianqi.cn[/url]。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部