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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。