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>
[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>
相关文章推荐
- DataGridView 行记录上下移动
- 实现DataGridView中行的上下移动(C#实现)
- datagridview和bindingnavigator绑定;点击移动到下一条记录时,datagridview指定行不移动的情况
- 用SQL实现记录上下移动的思路
- 用SQL实现记录上下移动的思路
- SqlServer2000两个存储过程 上下移动 和 临近记录显示
- DataGridView中行的上下移动
- 记录上下移动Community_CommunitiesMoveDown
- 实现DataGridView中行的上下移动
- GridView上下移动记录
- C# Winform DataGridView实现行[Row]的上下移动
- 单据管理窗口,上下两个datagridview查询时没有符合条件的记录时,绑定数据源的方法
- SwitchRecord 在连续窗体视图中使用上下箭头键在记录中上下移动
- C# datagridview中上下移动当前行且能将当前行放到首行和末尾
- SQl 存储过程完成记录的上下移动操作
- C# dataGridView上下移动选中行
- DataGridView 实现行[Row]的上下移动
- DataGridView中行的上下移动
- 上下光标移动选定图片
- Winform实现DataGrid数据上下移动