DataGridView 移动行 您所在的位置:网站首页 vb上移 DataGridView 移动行

DataGridView 移动行

2024-07-12 15:42| 来源: 网络整理| 查看: 265

前言

该片文章介绍了操作DataGridView时,对它的行进行移动操作。例如:对某一行进行上移、下移等。该篇文章只是介绍了其中一种方法,如有更好方法还请补充。

内容

我们可以制作这样的一个简单的界面:

DataGridView显示数据,其他几个按钮执行相关的操作。我把这四个按钮的事件统一写成一个点击事件,在再这个事件中根据按钮的名称判断进行了什么操作。当然,首先,我们需要一些数据。这里定义了一个Person类,存放人的姓名和性别。

Person类 1 class Person 2 { 3 /// 4 /// person构造函数 5 /// 6 /// 姓名 7 /// 性别 8 public Person(string name,string sex) 9 {10 this.name = name;11 this.sex = sex;12 }13 14 /// 15 /// 姓名16 /// 17 private string name;18 /// 19 /// 姓名20 /// 21 public string Name22 {23 get { return name;}24 set { name = value; }25 }26 27 /// 28 /// 性别29 /// 30 private string sex;31 /// 32 /// 性别33 /// 34 public string Sex35 {36 get { return sex;}37 set { sex = value; }38 }39 }

其次是后台代码。定义了一个全局的List对象,btnChangePosition为四个按钮的点击事件,对于其中一种“置顶”操作进行了注释,其他操作也是这种套路,就不再一一注释。

后台代码 1 public partial class Form1 : Form 2 { 3 List persons = new List(); 4 5 public Form1() 6 { 7 InitializeComponent(); 8 } 9 10 private void btnChangePosition_Click(object sender, EventArgs e) 11 { 12 if (persons.Count > 1) 13 { 14 Button button = (Button)sender; 15 Person perList; 16 int selectedIndex = dgv.CurrentRow.Index; //得到当前选择行的索引 17 if (button.Name.Equals("btnMoveFirst"))//置顶操作 18 { 19 if (selectedIndex > 0) 20 { 21 if (dgv.SelectedRows.Count == 1)//选中一行,选择多行则不进行操作 22 { 23 24 perList = persons[selectedIndex];//把当前行对象的值赋给临时变量 25 persons.RemoveAt(selectedIndex);//从集合中删除当前的对象 26 persons.Insert(0, perList);//把该对象插到第一个位置 27 28 dgv.DataSource = persons;//绑定对象 29 dgv.Refresh(); 30 31 dgv.Rows[selectedIndex].Selected = false;//当前选中行为假,因为进行置顶操作,当前选中行已经变化 32 dgv.Rows[0].Selected = true; //选中首行 33 dgv.CurrentCell = dgv.Rows[0].Cells[dgv.CurrentCell.ColumnIndex];//这里还需确定当前激活行 34 35 } 36 else 37 { 38 MessageBox.Show("请选择一行"); 39 } 40 } 41 } 42 else if (button.Name.Equals("btnMoveUp"))//上移 43 { 44 45 if (selectedIndex > 0) 46 { 47 if (dgv.SelectedRows.Count == 1)//选中一行 48 { 49 perList = persons[selectedIndex]; 50 persons.RemoveAt(selectedIndex); 51 persons.Insert(selectedIndex - 1, perList); 52 53 dgv.DataSource = persons; 54 dgv.Refresh(); 55 56 dgv.Rows[selectedIndex].Selected = false; 57 dgv.Rows[selectedIndex - 1].Selected = true; 58 dgv.CurrentCell = dgv.Rows[selectedIndex - 1].Cells[dgv.CurrentCell.ColumnIndex]; 59 } 60 else 61 { 62 MessageBox.Show("请选择一行"); 63 } 64 65 } 66 } 67 else if (button.Name.Equals("btnMoveDown"))//下移 68 { 69 70 if (selectedIndex


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有