今天遇到一個有趣的問題,有人想實現datagridview的選中行上下移動,粗略找了下msdn沒有相關屬性和方法,隨即自己寫了一個
考慮幾點問題,由於進行數據綁定的datagridview是不能直接控制其行來上下移動插入等操作的,所以改爲直接操作其數據源,上移
就是刪除原來的,然後添加一個新的到原位置-1的地方,基本思路就是這樣了,下移差不多吧
簡單代碼如下:
if (dataGridView1.SelectedRows.Count == 0)
{
return;
}
DataTable dt =(DataTable) this.dataGridView1.DataSource;
int i = this.dataGridView1.Rows.IndexOf(dataGridView1.SelectedRows[0]);
object [] ot = dt.Rows[i].ItemArray;
DataRow dr = dt.Rows[i];
dt.Rows.Remove(dr);
DataRow drs = dt.NewRow();
drs.ItemArray = ot;
dt.Rows.InsertAt(drs, i - 1);
foreach (DataGridViewRow dgvr in dataGridView1.SelectedRows)
{
dgvr.Selected = false;
}
dataGridView1.Rows[i - 1].Selected = true;
dataGridView1.CurrentCell = dataGridView1.Rows[i-1].Cells[0];