/// <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; } }