我想做个功能 当datagridview 存在数据的时候 我直接把光标定位到datagridview 上面 进行键盘上下键移动操作
  代替 用鼠标在datagridview 上去点击   这个怎么实现呢?
     

解决方案 »

  1.   

    C# WinFrom中DataGridView上下键控制选择单元格(代码示例)
    开发工具:VS2008数据库:Access4.0实现功能:用户可以使用“上、下”键选择DataGridView某行某列,并且将选择的单元格高亮显示。示例代码:        /// <summary>
            /// 自定义存放显示DataGridView行数变量
            /// </summary>
            private int tempCountNum = -1;         /// <summary>
            /// 处理键盘弹起事件
            /// </summary>
            /// <param name="e"></param>
            private void ProcessKeyUp(KeyEventArgs e)
            {
                 if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
                {
                    if (e.KeyCode == Keys.Up)
                    {
                        if (dgvResTable.Rows.Count > 0)
                        {
                            if (this.tempCountNum < 0)
                            {
                                this.tempCountNum = this.dgvResTable.Rows.Count;
                            }
                            if (tempCountNum > 0)
                            {
                                this.tempCountNum--;
                            }
                            this.dgvResTable.CurrentCell = this.dgvResTable.Rows[this.tempCountNum].Cells["NUM"];
                            this.dgvResTable.BeginEdit(true);
                        }
                    }
                    else if (e.KeyCode == Keys.Down)
                    {
                        if (dgvResTable.Rows.Count > 0)
                        {
                            if ( tempCountNum >= 0 && tempCountNum < dgvResTable.Rows.Count)
                            {
                                tempCountNum++;
                                if (tempCountNum >= 0 && tempCountNum < dgvResTable.Rows.Count)
                                {
                                    this.dgvResTable.CurrentCell = this.dgvResTable.Rows[this.tempCountNum].Cells["NUM"];
                                    this.dgvResTable.BeginEdit(true);
                                }
                            }
                        }
                    }
                    
                }
          }
     
      

  2.   

    datagridview本身就可以通过上下左右键来移动,
      

  3.   

    CurrentCellChanged上下键事件
    或者参考:
    C# WinFrom中DataGridView上下键控制选择单元格(代码示例)
    开发工具:VS2008数据库:Access4.0实现功能:用户可以使用“上、下”键选择DataGridView某行某列,并且将选择的单元格高亮显示。示例代码:        /// <summary>
            /// 自定义存放显示DataGridView行数变量
            /// </summary>
            private int tempCountNum = -1;         /// <summary>
            /// 处理键盘弹起事件
            /// </summary>
            /// <param name="e"></param>
            private void ProcessKeyUp(KeyEventArgs e)
            {
                 if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
                {
                    if (e.KeyCode == Keys.Up)
                    {
                        if (dgvResTable.Rows.Count > 0)
                        {
                            if (this.tempCountNum < 0)
                            {
                                this.tempCountNum = this.dgvResTable.Rows.Count;
                            }
                            if (tempCountNum > 0)
                            {
                                this.tempCountNum--;
                            }
                            this.dgvResTable.CurrentCell = this.dgvResTable.Rows[this.tempCountNum].Cells["NUM"];
                            this.dgvResTable.BeginEdit(true);
                        }
                    }
                    else if (e.KeyCode == Keys.Down)
                    {
                        if (dgvResTable.Rows.Count > 0)
                        {
                            if ( tempCountNum >= 0 && tempCountNum < dgvResTable.Rows.Count)
                            {
                                tempCountNum++;
                                if (tempCountNum >= 0 && tempCountNum < dgvResTable.Rows.Count)
                                {
                                    this.dgvResTable.CurrentCell = this.dgvResTable.Rows[this.tempCountNum].Cells["NUM"];
                                    this.dgvResTable.BeginEdit(true);
                                }
                            }
                        }
                    }
                    
                }
          }
     
      

  4.   

    CurrentCellChanged上下键事件
    或者参考:
    C# WinFrom中DataGridView上下键控制选择单元格(代码示例)
    开发工具:VS2008数据库:Access4.0实现功能:用户可以使用“上、下”键选择DataGridView某行某列,并且将选择的单元格高亮显示。示例代码:        /// <summary>
            /// 自定义存放显示DataGridView行数变量
            /// </summary>
            private int tempCountNum = -1;         /// <summary>
            /// 处理键盘弹起事件
            /// </summary>
            /// <param name="e"></param>
            private void ProcessKeyUp(KeyEventArgs e)
            {
                 if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
                {
                    if (e.KeyCode == Keys.Up)
                    {
                        if (dgvResTable.Rows.Count > 0)
                        {
                            if (this.tempCountNum < 0)
                            {
                                this.tempCountNum = this.dgvResTable.Rows.Count;
                            }
                            if (tempCountNum > 0)
                            {
                                this.tempCountNum--;
                            }
                            this.dgvResTable.CurrentCell = this.dgvResTable.Rows[this.tempCountNum].Cells["NUM"];
                            this.dgvResTable.BeginEdit(true);
                        }
                    }
                    else if (e.KeyCode == Keys.Down)
                    {
                        if (dgvResTable.Rows.Count > 0)
                        {
                            if ( tempCountNum >= 0 && tempCountNum < dgvResTable.Rows.Count)
                            {
                                tempCountNum++;
                                if (tempCountNum >= 0 && tempCountNum < dgvResTable.Rows.Count)
                                {
                                    this.dgvResTable.CurrentCell = this.dgvResTable.Rows[this.tempCountNum].Cells["NUM"];
                                    this.dgvResTable.BeginEdit(true);
                                }
                            }
                        }
                    }
                    
                }
          }