dc = new DataGridTextBoxColumn() ;
dc.TextBox.KeyDown +=new System.Windows.Forms.KeyEventHandler( this.KeyEnter );

private void KeyEnter( object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
string cell=this.dgPart.CurrentCell.ToString();
}
}其他按键都相应这个事件,为什么按enter键吧响应啊?有什么解决办法吗??

解决方案 »

  1.   

    把if(e.KeyCode   ==   Keys.Enter)改成
    if(e.KeyCode   ==   (char)Keys.Enter)
      

  2.   

    语法不对的。
    最关键是按了enter键,吧响应KeyEnter事件。
      

  3.   

    用这个判断呢
    if   (   e.KeyData   ==   Keys.Enter   )   

    string   cell=this.dgPart.CurrentCell.ToString(); 

      

  4.   


                               if (e.KeyValue == 0x0d)
                                {
    }
      

  5.   

    private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyValue == (int)Keys.Enter)
                {
                    MessageBox.Show("OK");
                }
            }
      

  6.   

    你试试:
    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar==(char)Keys.Enter)
                {
                    string   cell=this.dgPart.CurrentCell.ToString(); 
                }  
            }
      

  7.   

    在它的PreviewKeyDown事件里写吧。可能Enter键是特殊按键,KeyDown事件捕获不到吧。
      

  8.   

    是不是误解我的意思了?
    按下enter键,程序没跑到 KeyEnter这个事件。也就是相当于没响应keypress事件(KeyEnter事件是textbox的keypress事件委托来的)。跟if判断没关系的。可以确定这个判断是可行的。
      

  9.   

    不好意思,刚才说的应该是keydown事件。
      

  10.   

    系统对一些功能键会回避掉,不响应keydown事件。比如tab键,enter等。
    现在一个解决办法是:重写ProcessCmdKey方法。
    protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)   

    if (keyData == Keys.Enter)   
    {
    //把enter键换成F12键。
    msg.WParam= (System.IntPtr)123;
    }
    return base.ProcessCmdKey(ref msg,keyData);   

    然后在后面的KeyEnter事件中,判断是否是按了F12键。
    private   void   KeyEnter(   object   sender,   System.Windows.Forms.KeyEventArgs   e) 

    if(e.KeyCode.ToString() == "F12")
    {
                 MessageBox.Show( "OK "); 
            }
    }
    实现是可以实现了,但是总觉得不是佷好
    谁有更好的办法啊????
      

  11.   

    如果其他的键能够正常相应的话,说明不是代码本身的问题,你的Form肯定设置了AcceptButton属性,这个属性会占据enter的响应,把这个属性改为none应该就可以解决你的问题了~