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里面多选,而是执行我自己定义的函数 展开
目前我想的办法是截取系统消息,让这个消息不能流入到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里面多选,而是执行我自己定义的函数 展开
4个回答
展开全部
最直接的方法就是在listview里面的keydown事件里面 判断是否按下了shift + 方向键 满足要求就执行对应的函数即可 获取消息什么 你说的是注册热键吧 注册热键也只能正对form的句柄 而不能针对床体上的控件
更多追问追答
追问
你说的这个方法无法屏蔽LISTVIEW控件里面的多选。。。我的目的是不让它执行多选的操作。
追答
你直接在listview里面取消多选的功能就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你试试 override PreProcessMessage
追问
能说的详细一些么?
追答
http://msdn.microsoft.com/zh-cn/library/ms171537.aspx
中的修改非字符键,建议全文看完吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不明白你什么意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
tuuuuuuuuuuuuuuu
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询