一般情况下是按了回车后,会移动到下一行的同一列。
也就是从上到下,请问我如何改为从左到右?

解决方案 »

  1.   

    public class dgv : DataGridView
            {
                protected override bool ProcessDialogKey(Keys keyData)
                {
                    Keys key = (keyData & Keys.KeyCode);
                    if (key == Keys.Enter)
                    {
                        return this.ProcessRightKey(keyData);
                    }
                    return base.ProcessDialogKey(keyData);
                }
                protected override bool ProcessDataGridViewKey(KeyEventArgs e)
                {
                    if (e.KeyCode == Keys.Enter)
                    {                    
                       return this.ProcessRightKey(e.KeyData); 
                    }
                    return base.ProcessDataGridViewKey(e);
                }            public new bool ProcessRightKey(Keys keyData)
                {
                    Keys key = (keyData & Keys.KeyCode);
                    if (key == Keys.Enter)
                    {
                        // for new row use
                        //if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) 
                        //    && (base.CurrentCell.RowIndex == (base.RowCount - 1)))
                        //{
                        //    ((BindingSource)base.DataSource).AddNew();
                        //    base.CurrentCell = base.Rows[base.RowCount - 1].Cells[0];
                        //    return true;
                        //}                    if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) 
                            && (base.CurrentCell.RowIndex + 1 != base.NewRowIndex))
                        {
                            base.CurrentCell = base.Rows[base.CurrentCell.RowIndex + 1].Cells[0];
                            return true;
                        }
                        return base.ProcessRightKey(keyData);
                    }
                    return base.ProcessRightKey(keyData);
                }
            }