组合键麻,API可能好点。好像叫GetKeystoreState之类的

解决方案 »

  1.   

    其实我想要的就是判断按下键
       比如就是我按下A键是一个事件,按下B键是一个事件,按下A+B又是另一个事件.
       但是用KeYDown只能判断一个键!!
       还有其他方法吗?!
      

  2.   

    呵呵,思路要放宽点嘛,按键也是分值的
    在keydown事件中写上如下代码:
    if (e.Control)
    {
    switch (e.KeyCode)
    {
    case Keys.Insert:
    case Keys.C: // ** copy
    Clipboard.SetDataObject(fgFlex.Clip);
    break;
    case Keys.X: // ** cut
    Clipboard.SetDataObject(fgFlex.Clip);
    CellRange rg = fgFlex.Selection;
    rg.Data = null;
    break;
    case Keys.V: // ** paste
    IDataObject data = Clipboard.GetDataObject();
    if (data.GetDataPresent(typeof(string)))
    {
    fgFlex.Select(fgFlex.Row, fgFlex.Col, fgFlex.Rows.Count-1, fgFlex.Cols.Count-1, false);
    fgFlex.Clip = (string)data.GetData(typeof(string));
    fgFlex.Select(fgFlex.Row, fgFlex.Col, false);
    }
    break;
    }
    }
      

  3.   

    可以用Keydown的KeyCode来判断组合事件
      

  4.   

    回rachy(黑色雨) :
       我以为会比较简单,没想到~~~分数可以再加的嘛!
       照你所说,但我现在先按下A在不释放A的条件下再按下B,这个时候键盘并不响应A+B的按键,而是去响应B的按键了,着该怎么解决?!
     而且我需要不用shift,control```等特殊键组合.
     回 forover(天下无吥散dě宴席):
     怎么判断组合事件,请说清楚点儿,谢谢!
      

  5.   

    上面有高手说了用API函数,用keydown事件是不行的
      

  6.   

    用keydown跟keyup来捕捉组合键a+b事件
    代码如下,你可以参考一下
    bool KeyA = false;
    bool KeyB = false;
    private void Onkeyup(object sender, System.Windows.Forms.KeyEventArgs e)
    {
    switch(e.KeyCode)
    {
    case Keys.A:
    KeyA = false;
    this.Text = "";
    break;
    case Keys.B:
    KeyB = false;
    this.Text = "";
    break;
    }
    }private void Onkeydown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
    switch(e.KeyCode)
    {
    case Keys.A:
             KeyA = true;
    if(KeyB == true)
    this.Text = "A + B";
    break;
    ase Keys.B:
    KeyB = true;
    if(KeyA == true)
    this.Text = "A + B";
    break;
    }
    }