• .net winform


    winform 程序中响应键盘事件1

    在winform程序中给form添加了keyup事件,但是程序却不响应键盘事件,解决办法是重写Form基类的ProcessCmdKey(ref Message msg, Keys keyData)方法。
    
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
           {
               if (keyData == Keys.F4)
               {
                   FormFastHitStates form = new FormFastHitStates();
                   form.ShowDialog();
               }
                
               return true;
               //return base.ProcessCmdKey(ref msg, keyData);
           }

    将Form类的属性KeyPreview设置为ture

    winform键盘事件的响应2

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    
            {
                switch (keyData)
    
                {
                    case Keys.Right:
    
                        MessageBox.Show("Right");
    
                        break;
    
                    case Keys.Left:
    
                        MessageBox.Show("Left");
    
                        break;
    
                    case Keys.Up:
    
                        MessageBox.Show("up");
    
                        break;
    
                    case Keys.Down:
    
                        MessageBox.Show("down");
    
                        break;
    
                    case Keys.Space:
    
                        MessageBox.Show("space");
    
                        break;
    
                    case Keys.Enter:
    
                        MessageBox.Show("enter");
    
                        break;
    
                }
    
                //return false;//如果要调用KeyDown,这里一定要返回false才行,否则只响应重写方法里的按键.
    
                //这里调用一下父类方向,相当于调用普通的KeyDown事件.//所以按空格会弹出两个对话框
    
                //return base.ProcessCmdKey(ref msg, keyData);
    
                 return true;//这里return true 否则控件焦点会跟着方向键改变
    
            }
    
    第一种:重载ProcessCmdKey方法,直接在winform程序中加入这个就可以了
    
     protected   override   bool   ProcessCmdKey(ref       System.Windows.Forms.Message   msg,   System.Windows.Forms.Keys   keyData)  
                      {  
                              if   (keyData   ==   (Keys.Control   |   Keys.N))  
                              {   
                                     MessageBox.Show("按下了Control+N")
                                      return   true;  
                              }   
                              return   base.ProcessCmdKey(ref       msg,   keyData);  
                      }
    
    第二中方法:
    
    在form的keydown事件中捕捉按钮事件,程序如下,
    
    需要注意:form的KeyPreview 属性设置为true,否则捕捉不到事件
    
    #region 快捷键
            private void PhoneForm_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.Control && e.KeyCode == Keys.S)
                {
                    Control[] controls = this.pCallList.Controls.Find("recorder",true);
                    if (controls.Length > 0)
                    {
                        ((CallRecorder)controls[0]).btnSave_Click(null, null);
                    }
                }
                else if (e.Control && e.KeyCode == Keys.P)
                {
                    Control[] controls = this.pCallList.Controls.Find("recorder", true);
                    if (controls.Length > 0)
                    {
                        ((CallRecorder)controls[0]).btnSend_Click(null, null);
                    }
                }
                else if (e.Control && e.KeyCode == Keys.T)
                {
                    foreach (Control call in panelCalls.Controls)
                    {
                        if (call is UserCall)
                        {
                            if (((UserCall)call).isTalking)
                            {
                                ((UserCall)call).btnHangupCall_Click(null, null);
                            }
                            else
                            {
                                ((UserCall)call).btnAcceptCall_Click(null, null);
                            }
                          
                        }
                    }
                }
    
            }
            #endregion

    winform键盘事件的响应3

    想要实现点击键盘触发事件更改值首先我们需要更改一个属性
    
    KeyPreview这个属性 ,我们需要将这个属性改为True 这个属性默认时False , 当这个属性为False的时候,我们时不能实现点击键盘触发事件的

     然后我们在事件里面找到KeyDown

     键盘按键的键码值

    当我们给KeyDown声明了一个方法之后,我们就需要你点击的按键的值

    当上述都完成之后,我们就可以进行按下键盘键位之后的想要的任何操作啦,例如

    private void Form2_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.S && e.Control) // 按下ctrl和s时
                {
                    MessageBox.Show("我是ctrl+s,我想要保存数据");
     
                }
     
        }

    winform程序在初始化时窗口最大化

    this.WindowState = System.Windows.Forms.FormWindowState.Maximized; 
  • 相关阅读:
    数组下标索引的循环原来可以这样写
    移位运算>>与>>>
    java调用redis的多种方式与心得
    $.ajax传输js数组,spring接收异常
    div背景css样式笔记
    js监听网页页面滑动滚动事件,实现导航栏自动显示或隐藏
    设置系统时区
    安装与配置文本编辑器vim
    添加阿里云数据源
    spring controller获取web前端post数据乱码解决
  • 原文地址:https://www.cnblogs.com/qingjiawen/p/15605941.html
Copyright © 2020-2023  润新知