您的位置:首页 > 其它

DataGridView 行记录上下移动

2014-03-04 23:14 211 查看
经过自己一番简单的研究,发现在C#中实现很容易。自己临时写的,可能方法不是很好,但基本实现了预期的效果。

[csharp] view
plaincopy

// 上移

private void btnMoveUp_Click(object sender, EventArgs e)

{

// 选择的行号

int selectedRowIndex = GetSelectedRowIndex(this.dataGridView1);

if (selectedRowIndex >= 1)

{

// 拷贝选中的行

DataGridViewRow newRow = dataGridView1.Rows[selectedRowIndex];

// 删除选中的行

dataGridView1.Rows.Remove(dataGridView1.Rows[selectedRowIndex]);

// 将拷贝的行,插入到选中的上一行位置

dataGridView1.Rows.Insert(selectedRowIndex - 1, newRow);

// 选中最初选中的行

dataGridView1.Rows[selectedRowIndex - 1].Selected = true;

}

}

// 下移

private void btnMoveDown_Click(object sender, EventArgs e)

{

int selectedRowIndex = GetSelectedRowIndex(this.dataGridView1);

if (selectedRowIndex < dataGridView1.Rows.Count-1)

{

// 拷贝选中的行

DataGridViewRow newRow = dataGridView1.Rows[selectedRowIndex];

// 删除选中的行

dataGridView1.Rows.Remove(dataGridView1.Rows[selectedRowIndex]);

// 将拷贝的行,插入到选中的下一行位置

dataGridView1.Rows.Insert(selectedRowIndex + 1, newRow);

// 选中最初选中的行

dataGridView1.Rows[selectedRowIndex + 1].Selected = true;

}

}

[csharp] view
plaincopy

// 获取DataGridView中选择的行索引号

private int GetSelectedRowIndex(DataGridView dgv)

{

if(dgv.Rows.Count==0)

{

return 0;

}

foreach(DataGridViewRow row in dgv.Rows)

{

if (row.Selected)

{

return row.Index;

}

}

return 0;

} <pre class="csharp" name="code"> </pre><pre class="csharp" name="code"> // 显示序号,行号

private void dataGridView1_RowPostPaint(object sender,DataGridViewRowPostPaintEventArgs e)

{

Rectangle rectangle = new Rectangle(e.RowBounds.Location.X,

e.RowBounds.Location.Y,

dataGridView1.RowHeadersWidth - 4,

e.RowBounds.Height); TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),

dataGridView1.RowHeadersDefaultCellStyle.Font,rectangle,

dataGridView1.RowHeadersDefaultCellStyle.ForeColor,

TextFormatFlags.VerticalCenter | TextFormatFlags.Right);

}

</pre><pre class="csharp" name="code"> </pre><pre class="csharp" name="code"> // 不显示出dataGridView1的最后一行空白

dataGridView1.AllowUserToAddRows = false; </pre><br>

<br>

<pre></pre>

<pre></pre>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: