C#如何获取键盘的输入啊?

比如我要做一个拼图游戏,在电脑上按方向键时,程序应该产生怎么样的事件啊?... 比如我要做一个拼图游戏,在电脑上按方向键时,程序应该产生怎么样的事件啊? 展开
 我来答
dong_1984dd
推荐于2016-11-09 · TA获得超过1.1万个赞
知道小有建树答主
回答量:1070
采纳率:100%
帮助的人:230万
展开全部
  1.   C# 获取键盘输入数字的值                    

  2. C# 代码如下:

  3. /// <summary>
            /// 重载ProcessCmdKey事件
            /// </summary>
            /// <param name="msg"></param>
            /// <param name="keyData"></param>
            /// <returns></returns>
            protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                int index = dgvBasesList.CurrentCell.RowIndex;
                string text = Clipboard.GetText();
                EventArgs e = new EventArgs();
                if (keyData == Keys.Enter)
                {
                    this.btnOK_Click(this, e);
                }
                else if (keyData == Keys.Down)
                {
                    if (index < dgvBasesList.Rows.Count - 1)
                    {
                        // dgvBasesList.Rows[index + 1].Selected =true ;
                        dgvBasesList.CurrentCell = dgvBasesList[0, index + 1];
                        txtNo.Text = (dgvBasesList.CurrentRow.Index + 1).ToString();
                    }
                }
                else if (keyData == Keys.Up)
                {
                    if (index > 0)
                    {
                        dgvBasesList.CurrentCell = dgvBasesList[0, index - 1];
                        txtNo.Text = (dgvBasesList.CurrentRow.Index + 1).ToString();
                    }
                }
                else if ((keyData >= Keys.D0 && keyData <= Keys.D9) || (keyData >= Keys.NumPad0 && keyData <= Keys.NumPad9))
                {
                    string num = KeyCodeToStr(keyData);
                    string num1 = num;
                    int no = Int32.Parse(txtNo.Text.ToString() + num);
                    if (no > dgvBasesList.Rows.Count - 1)
                    {
                        if (Int32.Parse(num) > dgvBasesList.Rows.Count)
                        {
                            dgvBasesList.CurrentCell = dgvBasesList[0, dgvBasesList.Rows.Count - 1];
                            txtNo.Text = (dgvBasesList.Rows.Count - 1).ToString();
                        }
                        else if (Int32.Parse(num) > 0)
                        {
                            dgvBasesList.CurrentCell = dgvBasesList[0, Int32.Parse(num) - 1];
                            txtNo.Text = num.ToString();
                        }
                    }
                    else
                    {
                        dgvBasesList.CurrentCell = dgvBasesList[0, no - 1];
                        txtNo.Text = no.ToString();
                    }
                }
                return true;

  4.         }
            [DllImport("user32.dll")]
            static extern int MapVirtualKey(uint uCode, uint uMapType);

  5.         private static char KeyCodeToChar(Keys k)
            {
                int nonVirtualKey = MapVirtualKey((uint)k, 2);
                char mappedChar = Convert.ToChar(nonVirtualKey);
                return mappedChar;
            }
            public static string KeyCodeToStr(Keys k)
            {
                char mappedChar = KeyCodeToChar(k);
                string str = mappedChar.ToString();
                if (Char.IsWhiteSpace(mappedChar) || string.IsNullOrEmpty(str) || mappedChar == '\r' || mappedChar == '\n' || mappedChar == KeyCodeToChar(Keys.F1))
                {
                    return k.ToString();
                }
                else
                {
                    return str + "";
                }
            }

501703793yang
2012-03-13 · TA获得超过155个赞
知道答主
回答量:100
采纳率:100%
帮助的人:61万
展开全部
如果单是方向键呢OnKeyDown就可以,如果涉及其他功能键或者组合键,我想你还是去了解下系统API
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-02-19
展开全部
OnKeyDown消息响应事件,响应键盘输入。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
过客而已199
2012-03-09 · 超过25用户采纳过TA的回答
知道答主
回答量:179
采纳率:0%
帮助的人:60.4万
展开全部
KeyDown
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丈室有高朋
2011-02-19 · TA获得超过242个赞
知道答主
回答量:89
采纳率:0%
帮助的人:59.4万
展开全部
C#中,有个KeyDown的事件就是指电脑键盘按下后的效果。你可以去看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式