C#关于窗体的keysdown事件,无法获取到焦点


当窗体中包含button之类的控件时,按下方向键时它们会自动获取焦点,导致窗体keysdown事件无法执行。
解决方法很简单.将按钮之类控件放到panel容器中
控件就无法获取焦点了。
这时焦点会在整个窗体上,可以正常触发keysdown事件

转载于:https://www.cnblogs.com/shenwuyu/p/4482064.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力帮您实现这个功能。 以下是一个简单的飞机大战的JavaScript代码示例: ``` // 创建画布 var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); canvas.width = 512; canvas.height = 480; document.body.appendChild(canvas); // 背景图片 var bgReady = false; var bgImage = new Image(); bgImage.onload = function () { bgReady = true; }; bgImage.src = "background.png"; // 飞机图片 var planeReady = false; var planeImage = new Image(); planeImage.onload = function () { planeReady = true; }; planeImage.src = "plane.png"; // 游戏对象 var plane = { speed: 256, // 移动速度 x: 0, y: 0 }; var enemy = { x: 0, y: 0 }; var enemiesCaught = 0; // 处理键盘控制 var keysDown = {}; addEventListener("keydown", function (e) { keysDown[e.keyCode] = true; }, false); addEventListener("keyup", function (e) { delete keysDown[e.keyCode]; }, false); // 更新游戏状态 var update = function (modifier) { if (38 in keysDown) { // 上方向键 plane.y -= plane.speed * modifier; } if (40 in keysDown) { // 下方向键 plane.y += plane.speed * modifier; } if (37 in keysDown) { // 左方向键 plane.x -= plane.speed * modifier; } if (39 in keysDown) { // 右方向键 plane.x += plane.speed * modifier; } // 捕获敌机 if ( plane.x <= (enemy.x + 32) && enemy.x <= (plane.x + 32) && plane.y <= (enemy.y + 32) && enemy.y <= (plane.y + 32) ) { ++enemiesCaught; reset(); } }; // 重新开始游戏 var reset = function () { plane.x = canvas.width / 2; plane.y = canvas.height / 2; // 随机生成敌机位置 enemy.x = 32 + (Math.random() * (canvas.width - 64)); enemy.y = 32 + (Math.random() * (canvas.height - 64)); }; // 渲染游戏画面 var render = function () { if (bgReady) { ctx.drawImage(bgImage, 0, 0); } if (planeReady) { ctx.drawImage(planeImage, plane.x, plane.y); } ctx.fillStyle = "rgb(250, 250, 250)"; ctx.font = "24px Helvetica"; ctx.textAlign = "left"; ctx.textBaseline = "top"; ctx.fillText("敌机已捕获: " + enemiesCaught, 32, 32); }; // 控制游戏主循环 var main = function () { var now = Date.now(); var delta = now - then; update(delta / 1000); render(); then = now; requestAnimationFrame(main); }; // 浏览器兼容性处理 var w = window; requestAnimationFrame = w.requestAnimationFrame || w.webkitRequestAnimationFrame || w.msRequestAnimationFrame || w.mozRequestAnimationFrame; // 启动游戏 var then = Date.now(); reset(); main(); ``` 您可以根据自己的需求修改这个代码,添加更多的游戏元素和特效。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值