▼.Net Compact Framework 2.0メモ▼
キーイベントの処理


キーイベントを画面に表示するプログラムを作成する。



デザインの編集
KeyEventForm
プロパティ
Text ImageEx
MinimizeBox false
FormFactor Windows Mobile 6 Professional VGA
イベント メソッド
KeyDown KeyEventForm_KeyDown
KeyPress KeyEventForm_KeyPress
KeyUp KeyEventForm_KeyUp
MouseDown KeyEventForm_MouseDown
MouseMove KeyEventForm_MouseMove
MouseUp KeyEventForm_MouseUp


ソースコードの編集
KeyEventForm.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace KeyEventEx {
    public partial class KeyEventForm : Form {
        //情報
        private String keyEventInfo="なし";//キーイベント情報
        private String keyPressInfo="なし";//キープレスイベント情報
        private String mouseInfo   ="なし";//マウスイベント情報

        //ダブルバッファリング
        private Image offImg;//オフイメージ
        private Graphics g;  //オフグラフィックス

        //フォントとブラシ
        private Font       font; //フォント
        private SolidBrush brush;//ブラシ

        //コンストラクタ
        public KeyEventForm() {
            InitializeComponent();

            //ダブルバッファリングの生成
            offImg=new Bitmap(ClientSize.Width, ClientSize.Height);
            g=Graphics.FromImage(offImg);

            //フォントとブラシの生成
            font =new Font("MS ゴシック",6,FontStyle.Regular);
            brush=new SolidBrush(Color.Black);
        }

        //描画
        protected override void OnPaint(PaintEventArgs pea) {
            Draw();
        }

        //描画
        private void Draw() {
            //画面の描画
            g.Clear(Color.White);
            g.DrawString("キーイベント      :"+keyEventInfo,font,brush,0,0);
            g.DrawString("キープレスイベント:"+keyPressInfo,font,brush,0,20);
            g.DrawString("ポインタイベント  :"+mouseInfo,   font,brush,0,40);

            //画面に反映
            Graphics gra=CreateGraphics();
            gra.DrawImage(offImg,0,0);
            gra.Dispose();
        }

        //キーダウンイベント
        private void KeyEventForm_KeyDown(object sender,KeyEventArgs e) {
            //キーコード
            String keyCode=null;
            switch (e.KeyCode) {
                case Keys.D0   :keyCode="0";   break;
                case Keys.D1   :keyCode="1";   break;
                case Keys.D2   :keyCode="2";   break;
                case Keys.D3   :keyCode="3";   break;
                case Keys.D4   :keyCode="4";   break;
                case Keys.D5   :keyCode="5";   break;
                case Keys.D6   :keyCode="6";   break;
                case Keys.D7   :keyCode="7";   break;
                case Keys.D8   :keyCode="8";   break;
                case Keys.D9   :keyCode="9";   break;
                case Keys.Up   :keyCode="上";  break;
                case Keys.Down :keyCode="下";  break;
                case Keys.Left :keyCode="左";  break;
                case Keys.Right:keyCode="右";  break;
                case Keys.Enter:keyCode="改行";break;
                default: keyCode=""+e.KeyCode; break;
            }

            //修飾キー
            String modifiers=null;
            switch (e.Modifiers) {
                case Keys.Shift             :modifiers="シフト";       break;
                case Keys.Control           :modifiers="コントロール";    break;
                case Keys.Shift|Keys.Control:modifiers="シフト+コントロール";break;
            }

            //表示
            keyEventInfo="ダウン(キーコード="+keyCode;
            if (modifiers!= null) keyEventInfo+=",修飾キー="+modifiers;
            keyEventInfo+=")";
            Draw();
        }

        //キーアップイベントの処理
        private void KeyEventForm_KeyUp(object sender,KeyEventArgs e) {
            keyEventInfo="なし";
            Draw();
        }

        //キープレスイベントの処理
        private void KeyEventForm_KeyPress(object sender,KeyPressEventArgs e) {
            String keyChar=""+e.KeyChar;
            if (e.KeyChar=='\t') keyChar="Tab";
            if (e.KeyChar=='\b') keyChar="BS";
            if (e.KeyChar=='\n'||e.KeyChar=='\r') return;
            keyPressInfo="プレス(文字キー="+keyChar+")";
            Draw();
        }

        //マウスダウンイベントの処理
        private void KeyEventForm_MouseDown(object sender,MouseEventArgs e) {
            mouseInfo="ダウン("+e.X+","+e.Y+")";
            Draw();
        }

        //マウスムーブイベントの処理
        private void KeyEventForm_MouseMove(object sender,MouseEventArgs e) {
            mouseInfo="ムーブ("+e.X+","+e.Y+")";
            Draw();
        }

        //マウスアップイベントの処理
        private void KeyEventForm_MouseUp(object sender,MouseEventArgs e) {
            mouseInfo="なし";
            Draw();
        }
    }
}



−戻る−