标题:yu版进来瞧瞧 这个textbox控件的keypress事件 为啥只响应主键盘的事件呢 ...
只看楼主
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
结帖率:99.76%
已结贴  问题点数:20 回复次数:9 
yu版进来瞧瞧 这个textbox控件的keypress事件 为啥只响应主键盘的事件呢,我想让它响应副键盘的建 怎么做 比如 上下左右 四个方向键
程序代码:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            int EM_LINEFROMCHAR = 0xC9;
            int Row = (int)SendMessage(textBox1.Handle, EM_LINEFROMCHAR, -1, 0);
            int j = (int)SendMessage(textBox1.Handle, 0xB0, 0, 0) / 65536;
            int k = (int)SendMessage(textBox1.Handle, 0xBB, -1, 0);
            int m = j - k + 1;
            this.toolStripStatusLabel1.Text = "当前光标:" + Row + "" + " " + m + "";
        }


[ 本帖最后由 wp231957 于 2013-8-15 10:18 编辑 ]
搜索更多相关主题的帖子: 键盘 左右 
2013-08-15 10:17
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:20 
你这个是什么代码?不像是c、VC的,C#?,表示不懂

1 、会不会是你的副键盘 没有开启状态?
2 、textBox1_KeyPress 这个是被封装过了的吧,我不确定是否所有的键盘时间都会进入这个函数

可以用Spy++来抓取一下窗口消息,设置指抓取键盘消息就行了,按键盘时候看看Spy++能够抓取到副键盘的消息,如果不能抓去到,就说明窗口根本没有收到消息了。如果能够抓去到,估计那消息事件是没有进入该函数了。如果这样,可以试试自己接管窗口的消息来捕获,通过自己过滤键盘消息来相应你的事件了

我行我乐
我的博客:
http://blog.yuccn. net
2013-08-15 12:33
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
c#   谢谢了  我再看看   

我想做的事情就是模仿记事本  在文本编辑框里  移动鼠标 或键盘移动光标  能再状态栏里显示当前的行 列 值

现在鼠标的能做到了  主键盘输入也能做到了  但是 方向键的移动却是实现不了

DO IT YOURSELF !
2013-08-15 12:53
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
这有一篇文章,看看是否你想找的:
http://www.

[ 本帖最后由 yuccn 于 2013-8-15 12:59 编辑 ]

我行我乐
我的博客:
http://blog.yuccn. net
2013-08-15 12:54
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用yuccn在2013-8-15 12:54:01的发言:

这有一篇文章,看看是否你想找的:
http://www.
   嗯  还真是那么回事   以后再研究了  (暂时有点看不懂  呵呵)

DO IT YOURSELF !
2013-08-15 12:58
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
回复 5楼 wp231957
http://hi.baidu.com/caixiexin/item/0baac4cab5da91d497445221

C#我 不懂,读书时候看过一点点语法,之后没有碰过 了

我行我乐
我的博客:
http://blog.yuccn. net
2013-08-15 13:00
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
建议万版 如果实现了,写一些心得在C#板块,以后说不定给后来人少走点弯路

我行我乐
我的博客:
http://blog.yuccn. net
2013-08-15 13:02
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
程序代码:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            int EM_LINEFROMCHAR = 0xC9;
            int Row = (int)SendMessage(textBox1.Handle, EM_LINEFROMCHAR, -1, 0) + 1;
            int j = (int)SendMessage(textBox1.Handle, 0xB0, 0, 0) / 65536;
            int k = (int)SendMessage(textBox1.Handle, 0xBB, -1, 0);
            int m = j - k + 1;
            this.toolStripStatusLabel1.Text = "当前光标:" + Row + "" + " " + m + "";

        }

        private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            int EM_LINEFROMCHAR = 0xC9;
            int Row = (int)SendMessage(textBox1.Handle, EM_LINEFROMCHAR, -1, 0) + 1;
            int j = (int)SendMessage(textBox1.Handle, 0xB0, 0, 0) / 65536;
            int k = (int)SendMessage(textBox1.Handle, 0xBB, -1, 0);
            int m = j - k + 1;
            this.toolStripStatusLabel1.Text = "当前光标:" + Row + "" + " " + m + "";

        }
也没啥心得了   把这2个事件都写上  就实现 目标了  可以用方向键移动位置的同时   状态栏的行列位置也跟随改变

DO IT YOURSELF !
2013-08-15 13:11
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
回复 8楼 wp231957

我行我乐
我的博客:
http://blog.yuccn. net
2013-08-15 13:50
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
有个疑问:
如果你通过相应键盘事件来设置 this.toolStripStatusLabel1.Text,那么:

1 这样,岂不是也要对鼠标事件进行处理?如果在3行3列的时候,直接用鼠标把关闭挪到4行4列, this.toolStripStatusLabel1.Text能否显示正常?
2 通过拷贝数据之后粘贴到记事本的窗口, 行和列也会改变了的,你的 this.toolStripStatusLabel1.Text 会不会别改变?

我行我乐
我的博客:
http://blog.yuccn. net
2013-08-15 13:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-419132-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.084847 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved