int i=datagrid1.CurrentCell.ColumnNumber;
int j=datagrid1.CurrentCell.RowNumber;datagrid1.CurrentCell = new DataGridCell(j,i+1);你去试试我上面的代码,可以的,我就是这么作的!
如果,关于回车事件还有疑问的,你再发消息给我!

解决方案 »

  1.   

    为什么单元格不能触发DataGrid的OnKeyPress事件。
      

  2.   

    应该可以触发,但是我捕捉不到ENTER
      

  3.   

    在单元格里哟~你试试光标停在Cell上,看会不会触发。ENTER键可以用
      if (e.KeyChar == 13) 
      {
       SendKeys.Send("{Tab}");//处理回车换行。
      }关于OnKeyPress问题在线等。
      

  4.   

    在KeyDown、KeyUP、KeyPress全放了。都不行。你的光标一定要放在单元格里。
      有人是放在DataGirdTextBox的KeyPress事件里、我试了还不行。晕!晕!晕!To easthuhu(郭靖): Enter能用了吗?
      

  5.   

    public class KeyTextBox : TextBox
    {
    public KeyTextBox() 
    {

    } const int WM_KEYDOWN = 0x100;
    const int WM_KEYUP = 0x101;
    const int WM_CHAR = 0x0102;  public override bool PreProcessMessage( ref Message msg )
    {
    Keys keyCode = (Keys)(int)msg.WParam & Keys.KeyCode;
    if(msg.Msg == WM_KEYDOWN)

    Console.WriteLine("TextBox.WM_KEYDOWN    key: "+keyCode.ToString());
    } if((msg.Msg == WM_KEYDOWN)
    && keyCode == Keys.Tab)
    {
    return true;
    }
    return base.PreProcessMessage(ref msg);

    public class MyDataGridTextBoxColumnAboutKey : DataGridTextBoxColumn
    {
    private KeyTextBox _keyTextBox = null;
    private System.Windows.Forms.CurrencyManager _source = null;
    private int _rowNum;
    private bool _isEditing = false;
    public static int _RowCount = 0;

    public DataGridKeyTrapTextBoxColumn() : base()
    {
    _keyTextBox = new KeyTextBox();
    _keyTextBox.BorderStyle = BorderStyle.None; _keyTextBox.Leave += new EventHandler(LeaveKeyTextBox);
    _keyTextBox.KeyPress += new KeyPressEventHandler(TextBoxEditStarted);
    }