精华内容
下载资源
问答
  • 摘要:C#源码,菜单窗体,窗体移动 C#窗体移动示例,用键盘上的方向键控制窗体的移动,上、下、左、右键各控制窗体移动的方向,其实平时用的这种功能的不多,为了学习C#的目的,特将此源码发上来让新手们参考。
  • 实现按键控制窗体移动: 1 打开窗体接收按键事件的属性设置: mform.KeyPreview = true; 2 更改窗体的位置this.Location 的值 using System; using System.Collections.Generic; using System.ComponentModel; using...

    实现按键控制窗体移动:
    1 打开窗体接收按键事件的属性设置: mform.KeyPreview = true;
    2 更改窗体的位置this.Location 的值

    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 控制窗体移动
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                Form1 mform = new Form1();//Form1为主窗体名称
                mform.KeyPreview = true;//设置窗体接收按键事件
            }
    
            private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                Point point = this.Location;
                switch (e.KeyData)
                {
                    case Keys.Up:
                        point.Y -= 2;
                        break;
                    case Keys.Down:
                        point.Y += 2;
                        break;
                    case Keys.Left:
                        point.X -= 2;
                        break;
                    case Keys.Right:
                        point.X += 2;
                        break;
                    case Keys.Escape:
                        this.Close();
                        break;
                    default:
                        break;
    
                }
                this.Location = point;
            }
        }
    }
    
    展开全文
  • 功能:用键盘操作无边框窗体移动并关闭。 环境:delphi7+winxp3 通过测试 完成时间:18:09 2011-3-7 } unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, ...

     

    运行结果截图:

     

     

    展开全文
  • winform窗体的键盘基本控制 1.简单介绍 1.1 KeyPreview属性 确定窗体上控件的键盘事件是否已向窗体注册 如果我们将窗体的KeyPreview的属性值设置为True,那么窗体将会比其内部的控件有限获得键盘事件的激活权! &...

    winform窗体的键盘基本控制

    1.简单介绍

    1.1 KeyPreview属性

    • 确定窗体上控件的键盘事件是否已向窗体注册
    • 如果我们将窗体的KeyPreview的属性值设置为True,那么窗体将会比其内部的控件优先获得键盘事件的激活权!
          例如当我们的窗体之中有着button按钮,当你设置了键盘事件,例如KeyDown事件,但是同时你也设置了窗体的KeyDown事件,那么在你按下按键的时候,键盘事件会响应button按钮对应的键盘事件,而不会响应窗体设置的KeyDown事件。但是如果此时你设置了KeyPreview属性值为True。此时再次按下按键,则会优先响应窗体的键盘事件,再会响应按钮的键盘事件!
    • 示例
    private: System::Void FrmMain_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    		if (e->KeyData == Keys::W) {
    			MessageBox::Show("窗体");
    		}
    }
    private: System::Void btn_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    	if (e->KeyData == Keys::W) {
    		MessageBox::Show("按钮");
    	}
    }
    

    若设置了KeyPreview属性值为True,则会先弹出“窗体”!再弹出“按钮”!
    KeyPreview属性值为False,则只会弹出“按钮”。

    1.2 KeyDown事件、KeyPress事件以及KeyUp事件

    1.2.1 简单介绍

    • 根据MSDN所讲述,三者之间触发的顺序依次是:KeyDown>KeyPress>KeyUp.
      (虽然触发的顺序KeyDown,但是响应的顺序KeyDown迟于KeyPress。)
    • 区别: 其中KeyDownKeyPress事件一样,都是按键按下之后先后发生,但是KeyUp与其不同,是在按键释放的时候发生!!

    1.2.2 KeyDown事件

    • 当键盘按下即触发事件
    • 示例
    private: System::Void FrmMain_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    		if (e->KeyData == Keys::W) {
    			MessageBox::Show("down");
    		}	
    	}
    

    (记住,这是窗体的的键盘事件,应该先将KeyPreview设置为True。)
    按下键盘上的W即会触发!弹出“down”。

    1.2.3 KeyPress事件

    • 当键盘按下即触发事件
    • 示例
    private: System::Void FrmMain_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
    		if (e->KeyChar =='w') {
    			MessageBox::Show("press");
    		}
    	}
    

    (记住,这是窗体的的键盘事件,应该先将KeyPreview设置为True。)
    按下键盘上的W即会触发!弹出“press”。

    • 另一种示例
    private: System::Void FrmMain_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
      	if (e->KeyChar <= 100) {
      		MessageBox::Show("press");
      	}
      }
    

    当按下键,键的ASCII的值不大于100的时候都会触发事件,并且区分大小写!

    1.2.4 KeyUp事件

    • 当键盘释放的时候,触发该事件
    • 示例
    private: System::Void FrmMain_KeyUp(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    		if (e->KeyData == Keys::W) {
    			MessageBox::Show("up");
    		}
    	}
    

    当释放按键w的时候,会弹出“up”。

    2.主要区别

    1. KeyPress主要用于捕获数字(注意:包括shift+数字的符号)、字母(包括大小写)、小键盘等,除了F1-12SHIFTAltCtrlInsertHomePgUpDeleteEndPgDnScrollLockPauseNumLock、菜单键、开始键和方向键外的ANSI字符
    2. KeyDownKeyUp通常可以捕获键盘除了PrScrn所有按键。(不包括特殊键盘的特殊键,比如机械键盘的宏定义键盘
    3. KeyPress只能够捕获单个字符。
    4. KeyDownKeyUp 可以捕获组合键。
    5. KeyPress 可以捕获单个字符的大小写。
    6. KeyDownKeyUp 对于单个字符捕获的KeyValue 都是一个值,也就是不能判断单个字符的大小写。
    7. KeyPress 不区分小键盘和主键盘的数字字符。
    8. KeyDownKeyUp 区分小键盘和主键盘的数字字符。
    9. 其中PrScrn 按键KeyPressKeyDownKeyUp 都不能捕获。

    3.注意

    • 触发KeyDown后,不一定触发KeyUp事件,因为当你触发KeyDown事件的时候,你移动鼠标,或者按其他的键时候,KeyUp事件则不会被触发!
    private: System::Void FrmMain_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    		if (e->KeyData == Keys::W) {
    			down++;
    			MessageBox::Show("down");
    		}	
    	}
    private: System::Void FrmMain_KeyUp(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    	if (e->KeyData == Keys::W) {
    		up++;
    		MessageBox::Show("up");
    	}
    }
    

    此时若你按住了w键,会弹出“down”,但是此时你释放了w键,再次按住回车键,将弹框关闭,则不会再次触发keyUp事件了。但是,按住了w键,关闭了弹窗,再释放w键,此时会触发KeyUp事件,弹出“up”。

    • KeyDown与KeyPress的触发
    private: System::Void FrmMain_KeyDown(System::Object^  sender, System::Windows::Forms::KeyEventArgs^  e) {
    		if (e->KeyData == Keys::W) {
    			MessageBox::Show("down");
    		}	
    	}
    private: System::Void FrmMain_KeyPress(System::Object^  sender, System::Windows::Forms::KeyPressEventArgs^  e) {
    		if (e->KeyChar == 'w') {
    			MessageBox::Show("press");
    		}
    	}
    

    KeyPress的触发在KeyDown之后,但是响应确是KeyPress在前。
    当你按下w键(此时需要为小写,因为KeyPress识别大小写。)会先弹出"press",再弹出"down"。

    展开全文
  • /// /// 快捷键操作 /// protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch (keyData) { // 标记为起点

     

      

            /// <summary>
            /// 快捷键操作
            /// </summary>
            protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                switch (keyData)
                {
                    // 标记为起点
                    case Keys.Z:
                        btnSignStart_Click(null, null);
                        break;
                    // 标记终点
                    case Keys.X:
                        btnSignEnd_Click(null, null);
                        break;
                    // 退播-X2
                    case Keys.Q:
                        picBtn_Click(picBX2, null);
                        break;
                    // 退播-X1
                    case Keys.A:
                    case Keys.Left:
                        picBtn_Click(picBX1, null);
                        break;
                    // 暂停
                    case Keys.S:
                    case Keys.Space://空格
                        picBtn_Click(picPause, null);
                        break;
                    // 播放X1
                    case Keys.D:
                    case Keys.Right:
                        picBtn_Click(picX1, null);
                        break;
                    // 播放X2
                    case Keys.F:
                        picBtn_Click(picX2, null);
                        break;
                    // 播放X4
                    case Keys.G:
                        picBtn_Click(picX4, null);
                        break;
                    // 停止
                    case Keys.B:
                        picBtn_Click(picStop, null);
                        break;
                    // 保存并退出
                    case Keys.Escape://ESC
                        labelClose_Click(null, null);
                        break;
                    case Keys.Up:
                        MessageBox.Show("up");
                        break;
                    case Keys.Down:
                        MessageBox.Show("down");
                        break;
                    case Keys.Enter:
                        MessageBox.Show("enter");
                        break;
                }
    
                return base.ProcessCmdKey(ref msg, keyData);
            }


    展开全文
  • //设置四个布尔变量:上下左右方向键。组合起来有八种方向 private boolean isUp = false; private boolean isDown=false; private boolean isLeft=false; private boolean isRight=false; //自定义移动猪的...
  • 有时想定义方向键的自定义处理事件时,你可以发现,虽然自定义的处理事件发生了响应,但是也可以看到,按下方向键时,发现窗体上控件的焦点也发生了切换。而这种结果不是我们想要的,我们不想按下方向键时,控件的...
  • 单击“开始”,则飞机图片左右在窗体移动移动窗体边界时,反转方向移动。单击“停止”按钮,则飞机回到初始位置(窗体左侧)并停止移动窗体设置如下: int X, Y; public Form4() { Initiali
  • C#中 取消方向键对控件焦点的控制

    千次阅读 2011-11-30 22:20:37
    有时想定义方向键的自定义处理事件时,你可以发现,虽然自定义的处理事件发生了响应,但是也可以看到,按下方向键时,发现窗体上控件的焦点也发生了切换。而这种结果不是我们想要的,我们不想按下方向键时,控件的...
  • 本次实例实现了一个小球的控制移动,键盘上的上下左右四个键控制小球移动方向,这里只是一个小小的键盘监听器的雏形,希望会为以后的学习有些好的提示。  程序运行时要用鼠标点击一下窗体,从而激活窗体,这样...
  • MyButton(2),当我移动方向键时。Button1和Button2时。可以自由移动焦点。一旦移动到我的MyButton,方向键就失效了!请问大家一下,我要在MyButton下怎么写。才可以用方向键。3个按钮自由移动焦点位置!
  • } /// /// 重写ProcessDialogKey,来允许监听方向键 /// /// /// protected override bool ProcessDialogKey(Keys keycode) { switch (keycode) { case Keys.Left: case Keys.Up: case Keys.Right: case Keys.Down:...
  • 对象移动,wasd和上下左右,使用键盘事件监听器但是总有延迟,前几天室友想写个小游戏项目去到老师那里过关时提到这个问题,刚好又需要线程,就弄了一个这个(如果不想看分析)完整的代码链接在最后大概是这样的,...
  • 使用键盘监听器来控制图片的移动:        1,创建一个窗体, 重写这个paint()方法来绘制图片和窗体,刷新  preson.draw();  如果电脑配置不是很好就只要刷新JPanel就可以了, 不用刷新JFrame(JFrame比较...
  • qt4.键盘方向键

    2016-04-15 11:30:33
    PS:出现焦点的话,方向键盘是没有进入事件的.. Qt程序是事件驱动的, 程序的每个动作都是由幕后某个事件所触发.  Qt事件的类型很多, 常见的qt的事件如下: 键盘事件: 按键按下和松开. 鼠标事件: 鼠标...
  • MFC 窗体大小控制

    千次阅读 2017-08-31 15:37:15
    删除) 2 、保存后退出项目,到文件夹中删除实际的 .h 和 .cpp 文件; 3 、删除 .clw 文件; 4 、重新进入项目,进行全部重建( rebuild all )。 如何建立一个新类?     从 “ 插入 ”(Insert)...
  • 1、适用于Delphi。 2、在窗体上放置该控件,即可用回车键或向上向下 方向键代替Tab键移动焦点。 3、比DosMove要好用哟,不信试试。
  • MFC按键控制

    千次阅读 2015-08-11 22:01:39
    实现MFC下按键控制;参考:http://blog.csdn.net/mjk1133/article/details/6704694  http://blog.csdn.net/iamoyjj/article/details/6612584 工程中CPP代码 // MoveDlg.cpp : implementation file // #include ...
  • VB.NET键盘控制焦点移动

    千次阅读 2008-03-28 13:55:00
    VB.NET键盘控制焦点移动作者:佚名 来源:本站整理 发布时间:2005-6-14 8:45:50---键盘控制焦点移动---...最人性化呢就是:按回车键(在小键盘内输入只要一只手就可以了),还可以用方向键控制.第一步:Form的KeyPreview
  • 这几天都在忙着写一个老板提出的傻逼功能,大致说说需求,就是要用用Ios的虚拟按键去控制PC的角色移动,如果是Unity来制作这个功能并不难弄,因为这个只需要通过网络层来传递控制信号,然后PC端进行响应即可。...
  • C# 怎样让上下左右方向键生效

    万次阅读 2011-11-27 16:40:09
    做C#程序处理键盘事件时肯能会发现,想让上下左右箭头控制程序却行不通(如控制贪食蛇游戏中蛇的方向),原因很简单:因为这些是特殊,被称为是预处理。预处理包括: Tab、Return、Esc 以及向上、向下、...
  • 今天总算把这个困扰我N久的问题给解决了,在我的flash游戏《牧场物语》中有方向键操作,但是在按上下方向键的时候浏览器右边的滚动条跟着滚动,也一上一下的,弄的我头晕,还让不让人活啊,今天终于得到答案了。...
  • 在DLL中封装的VCL窗体Tab响应的问题 在DLL中的子窗体不会响应Tab按键的,这个时候就需要手动去指定Tab的操作,但是前提是主窗体要向这个窗体发送一个消息,一个Tab按下的消息。基本顺序是这样的: 1. 主窗体...
  • [VB.NET]键盘控制焦点移动

    千次阅读 2005-02-20 13:52:00
    ---键盘控制焦点移动--...最人性化呢就是:按回车键(在小键盘内输入只要一只手就可以了),还可以用方向键控制.第一步:Form的KeyPreview的属性为True第二步:按照需要把TabIndex按顺序设置第三步:编写一个方法,代码如下: -
  • Java窗体实现飞机躲子弹游戏

    千次阅读 2016-10-19 12:00:16
    主要功能是:在一个窗体里面,用方向键盘控制飞机图片移动来躲避满屏的子弹。由于篇幅的关系,这里主要做一个整体的文字介绍,代码在连接里,有详细注释。http://download.csdn.net/detail/sinadrew/9657817Java飞机...
  • import sys,pygame pygame.init() # 初始化程序 size = width, height = 400 ,300 speed = [1, 1] # 设置移动的x,y距离 BLACK = 0, 0, 0 screen = pygame.display.set_mod.
  • 窗体泄露

    千次阅读 2014-11-11 13:11:39
    Android的每一个Activity都有个WindowManager窗体管理器,构建在某个Activity之上的对话框、PopupWindow也有相应的WindowManager窗体管理器。因为Dialog、PopupWindown不能脱离Activity而单独存在着,所以当承载某个...
  • Qt4下创建自定义窗体

    千次阅读 2016-05-28 08:05:33
    虽然这么做可以实现一个大家想要打窗体,但是它带来的负作用是失去了很多原生窗体的一些自定义的一些事件响应(比如win+方向键无法响应,无法自动布局很不爽)。还好鄙人是写C#出生,在winform下有
  • 创建窗体

    千次阅读 2010-05-23 00:16:00
    第一讲 用Create()方法新建一个窗体应用程序 一般来讲,大多数windows应用程序的界面都是由一个或数个窗体构成。而VC++中提供了丰富的类库,用于创建Windows窗体应用程序。 我们一般可以通过CFreameWnd类中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,887
精华内容 3,954
关键字:

方向键控制窗体移动