/// <summary>
/// 上移
/// </summary>
/// <param name="dataGridView"></param>
public static void UpDataGridView(DataGridView dataGridView)
{
try
{
int count = dataGridView.SelectedRows.Count;
if (count==0)
{
return;
}
int index = dataGridView.SelectedRows[count - 1].Index;//DataGridView中,选中的第一条
if (index <= 0)//选中开头
{
return;
}
List<DataGridViewRow> rows = new List<DataGridViewRow>();
foreach (DataGridViewRow row in dataGridView.SelectedRows)
{
rows.Add(row);
}
//说明:DataGridView.SelectedRows倒序排列DataGridView选中的行
rows.Reverse();//反转顺序,改为正序
List<int> rowIndex = new List<int>();//保存已经选中位移后的下标
for (int i = 0;i< rows.Count;i++)
{
int saveIndex = rows[i].Index;
rowIndex.Add(saveIndex-1);
dataGridView.Rows.RemoveAt(saveIndex);//删除
dataGridView.Rows.Insert(saveIndex - 1, rows[i]);//添加到指定位置
}
dataGridView.ClearSelection();//清理其他选中
foreach (var item in rowIndex)//重新设置选中
{
dataGridView.Rows[item].Selected = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
/// <summary>
/// 下移
/// </summary>
/// <param name="dataGridView"></param>
public static void DownDataGridView(DataGridView dataGridView)
{
try
{
int count = dataGridView.SelectedRows.Count;
if (count == 0)
{
return;
}
int index = dataGridView.SelectedRows[0].Index;//DataGridView中,选中的最后一条
if (index >= dataGridView.Rows.Count-1)//选中结尾
{
return;
}
List<DataGridViewRow> rows = new List<DataGridViewRow>();
foreach (DataGridViewRow row in dataGridView.SelectedRows)
{
rows.Add(row);
}
List<int> rowIndex = new List<int>();//保存已经选中位移后的下标
for (int i = 0; i < rows.Count; i++)
{
int saveIndex = rows[i].Index;
rowIndex.Add(saveIndex + 1);
dataGridView.Rows.RemoveAt(saveIndex);//删除
dataGridView.Rows.Insert(saveIndex + 1, rows[i]);//添加到指定位置
}
dataGridView.ClearSelection();//清理其他选中
rowIndex.Reverse();//反转,为了选中顺序和默认选中顺序保存一致
foreach (var item in rowIndex)//重新设置选中
{
dataGridView.Rows[item].Selected = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="dataGridView"></param>
public static void DeleteDataGridView(DataGridView dataGridView)
{
try
{
int count = dataGridView.SelectedRows.Count;
if (count == 0)
{
return;
}
int index = dataGridView.SelectedRows[count - 1].Index;//DataGridView中,选中的第一条
if (index < 0)
{
return;
}
DialogResult dr = MessageBox.Show("确定删除当前选中行?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (dr == DialogResult.OK)
{
List<int> rowIndex = new List<int>();//保存的下标
foreach (DataGridViewRow row in dataGridView.SelectedRows)
{
rowIndex.Add(row.Index);
}
foreach (var item in rowIndex)
{
dataGridView.Rows.RemoveAt(item);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}