DataGridView移动上下行

 /// <summary>
        /// 移动行
        /// </summary>
        /// <param name="i_UpFlag">移动标识,true:向上移动,false:向下移动</param>
        private void MoveGridRow(bool i_UpFlag)
        {
            _isUpNext = true;
            DataGridViewRow _row = gridviewStep.SelectedRows[0];
            int _destPos = _row.Index;//目标行位置
            bool _flag = false;
            if (i_UpFlag)
            {//向上
                _destPos -= 1;
                if (_destPos >= 0)
                {//如果目标位置大于等于0
                    _flag = true;
                }
            }
            else
            {//向下
                _destPos += 1;
                if (_destPos < gridviewStep.Rows.Count)
                {//如果目标位置小于等于当前行数
                    _flag = true;
                }
            }
            if (_flag)
            {
                int _pos = _row.Index;
                try
                {
                    for (int k = 0; k < gridviewStep.Columns.Count; k++)
                    {//置换两行的值
                        object _old = gridviewStep.Rows[_destPos].Cells[k].Value;
                        gridviewStep.Rows[_destPos].Cells[k].Value = _row.Cells[k].Value;
                        _row.Cells[k].Value = _old;
                    }
                    gridviewStep.Rows[_destPos].Selected = true;
                    _row.Selected = false;
                }
                catch
                {
                }
                gridviewStep.Focus();
                gridviewStep.Rows[_destPos].Selected = true;
            }

        }

  

原文地址:https://www.cnblogs.com/dragon-L/p/3757553.html