c# 按键消息处理,需要判断是否按下SHIFT+方向键

我的FORM里面只有一个TEXTBOX,和一个LISTVIEW空间,之前我定义了一个SHIFT+方向键的快键,没有注册到系统,结果每次使用的时候,都会默认触发LISTVI... 我的FORM里面只有一个TEXTBOX,和一个LISTVIEW空间,之前我定义了一个SHIFT+方向键的快键,没有注册到系统,结果每次使用的时候,都会默认触发LISTVIEW的多项选中效果。我现在想要做得就是屏蔽这个效果。
目前我想的办法是截取系统消息,让这个消息不能流入到LISTVIEW中,但是我重写的FORM的WndProc函数没能截到按键消息,求高人指点。我的代码如下
protected override void WndProc(ref Message m)
{
data[i] = m.Msg;
i++;

if (m.Msg == 0x102)
{
i = 0;

}
if (m.Msg == 0x100)
{
i = 0;
}
base.WndProc(ref m);
}

我自己判断是因为系统消息的MSG值判断错了,但是没有查到按键信息的MSG值究竟是多少。求助!
这么说,在LISTVIEW控件中有选中行,且可以多选的请款下,我需要按键盘的SHIFT+方向键,不是在LISTVIEW里面多选,而是执行我自己定义的函数
展开
 我来答
七终多E
2012-01-30 · TA获得超过1.4万个赞
知道大有可为答主
回答量:3756
采纳率:46%
帮助的人:3383万
展开全部
最直接的方法就是在listview里面的keydown事件里面 判断是否按下了shift + 方向键 满足要求就执行对应的函数即可 获取消息什么 你说的是注册热键吧 注册热键也只能正对form的句柄 而不能针对床体上的控件
更多追问追答
追问
你说的这个方法无法屏蔽LISTVIEW控件里面的多选。。。我的目的是不让它执行多选的操作。
追答
你直接在listview里面取消多选的功能就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhenxin0603
2012-01-30 · TA获得超过600个赞
知道小有建树答主
回答量:600
采纳率:100%
帮助的人:445万
展开全部
你试试 override PreProcessMessage
追问
能说的详细一些么?
追答
http://msdn.microsoft.com/zh-cn/library/ms171537.aspx
中的修改非字符键,建议全文看完吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我爱编程
2012-01-30 · 超过16用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:31.4万
展开全部
不明白你什么意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuyilin405
2012-01-30 · 贡献了超过139个回答
知道答主
回答量:139
采纳率:0%
帮助的人:18.8万
展开全部
tuuuuuuuuuuuuuuu
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式