经过自己一番简单的研究,发现在C#中实现很容易。自己临时写的,可能方法不是很好,但基本实现了预期的效果。
- // 上移
- 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;
- }
- }
- // 获取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>
|