_Mia_ 2018-11-01 09:22 采纳率: 0%
浏览 659

C#.net无法获取我的键盘事件?

初学.net想写一个简单的键盘事件,写完之后没有报错但是运行时我的键盘录入并没有被读取到

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Tank
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.KeyPreview = true;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            lblX.Text = "X坐标:"+  picTank.Top;
            lblY.Text = "Y坐标:" + picTank.Left;
            lblMsg.Text = "请按上下左右键控制坦克!";
            picTank.Image = picTankU.Image;
            picTankU.Visible = false;
            picTankD.Visible = false;
            picTankL.Visible = false;
            picTankR.Visible = false;
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Up:
                    picTank.Image = picTankU.Image;
                    if (picTank.Top + picTank.Height <= 0)
                    {
                        picTank.Top = this.Height;
                    }
                    else
                    {
                        picTank.Top -= 10;
                    }
                    break;
                case Keys.Down:
                    picTank.Image = picTankD.Image;
                    if (picTank.Top >= this.Height)
                    {
                        picTank.Top = 0-picTank.Height;
                    }
                    else
                    {
                        picTank.Top += 10;
                    }
                    break;
                case Keys.Left:
                    picTank.Image = picTankL.Image;
                    if (picTank.Width + picTank.Left <= 0)
                    {
                        picTank.Left = this.Width;
                    }
                    else
                    {
                        picTank.Left -= 10;
                    }
                    break;
                case Keys.Right:
                    picTank.Image = picTankR.Image;
                    if (picTank.Left >= this.Width)
                    {
                        picTank.Left = 0 - picTank.Height;
                    }
                    else
                    {
                        picTank.Left += 10;
                    }
                    break;
            }
            lblX.Text = "X坐标:" + picTank.Top;
            lblY.Text = "Y坐标:" + picTank.Left;
            lblMsg.Text = "现在按下" + e.KeyCode.ToString() + "键,键值为" + e.KeyCode + "!!";
        }

        private void Form1_KeyUp(object sender, KeyEventArgs e)
        {
            lblMsg.Text = "请按上下左右键控制坦克!";
        }
    }
}


  • 写回答

1条回答 默认 最新

  • threenewbee 2018-11-01 09:23
    关注

    窗体的keypreview属性设置为true

    评论

报告相同问题?

悬赏问题

  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信