欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Datagridview使用技巧(9)Datagridview的右键菜单

程序员文章站 2023-12-01 23:49:46
datagridview,datagridviewcolumn,datagridviewrow,datagridviewcell有contextmenustrip属性。可以...

datagridview,datagridviewcolumn,datagridviewrow,datagridviewcell有contextmenustrip属性。可以通过设置contextmenustrip对象来控制datagridview的右键菜单的显示。

datagridviewcolumn的contextmenustrip属性设定除了列头以外的单元格的右键菜单。

datagridviewrow的contextmenustrip属性设定除了行头以外的单元格的右键菜单。

datagridviewcell的contextmenustrip属性设定指定单元格的右键菜单。

对于单元格上的右键菜单的设定,优先顺序是:cell>row>column>datagridview

利用cellcontextmenustripneeded、rowcontextmenustripneeded事件可以设定单元格的右键菜单,尤其是需要右键菜单根据单元格值的变化而变化的时候。比起使用循环遍历,使用该事件来设定右键菜单的效率更高。

说明:cellcontextmenustripneeded事件处理方法的参数中,e.rowindex=-1表示列头,e.columnindex=-1表示行头。rowcontextmenustripneeded则不存在e.columnindex=-1的情况。

示例一:

//设置datagridview的右键菜单
this.dgv_users.contextmenustrip = cmsdgv;
//设置列的右键菜单
this.dgv_users.columns[1].contextmenustrip = cmscolumn;
//设置列头的右键菜单
this.dgv_users.columns[1].headercell.contextmenustrip = cmsheadercell;
//设置行的右键菜单
this.dgv_users.rows[2].contextmenustrip = cmsrow;
//设置单元格的右键菜单
this.dgv_users[1, 2].contextmenustrip = cmscell;

示例二:

private void dgv_users_cellcontextmenustripneeded(object sender, datagridviewcellcontextmenustripneededeventargs e)
{
 datagridview dgv = sender as datagridview;
 if (e.rowindex < 0)
 {
   //设置列头右键
   e.contextmenustrip = cmsheadercell;
 }
 else if (e.columnindex < 0)
 { 
   //设置行头右键菜单
   e.contextmenustrip = cmsrow;
  }
  else if (dgv[e.columnindex, e.rowindex].value.tostring().equals("男"))
  {
   e.contextmenustrip = cmscell;
  }
  else
  {
   e.contextmenustrip = cmsdgv;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。