首页 > 其他分享 >winforms的datagridview内设置右键菜单,并删除指定一行,之后序列号改变

winforms的datagridview内设置右键菜单,并删除指定一行,之后序列号改变

时间:2023-10-27 11:56:40浏览次数:34  
标签:控件 菜单 删除 RowIndex DataGridView 右键 序列号 datagridview

一、编辑右键菜单

  1、在工具箱中拖入一个contextMenuStrip控件;

  2、编辑contextMenuStrip控件,在控件内添加想要的选项,在此添加“删除”选项;

  3、(可选项)绑定DataGridView和新增的contextMenuStrip1,选中DataGridView,属性,contextMenuStrip中选择下拉:contextMenuStrip1。

二、实现在某一行点击右键弹出菜单,并选中该行

  实现DataGridView的CellMouseDown事件:右键属性中找到事件,双击CellMouseDown,编写点击事件;

private void DataGridView_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
    if (e.Button != MouseButtons.Right)
    {
        return;
    }

    if (e.RowIndex < 0)
    {
        return;
    }

    //若行已是选中状态就不再进行设置
    if (DataGridView.Rows[e.RowIndex].Selected == false)
    {
        DataGridView.ClearSelection();
        DataGridView.Rows[e.RowIndex].Selected = true;
    }

    //只选中一行时设置活动单元
    if (DataGridView.SelectedRows.Count == 1)
    {
        DataGridView.CurrentCell = DataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex];
    }

    //弹出操作菜单
    contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
}

三、实现删除事件

  双击contextMenuStrip控件内的删除选项,编写点击事件:

private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
{
    var currentCellRow = DataGridView.CurrentCell.RowIndex;
    //从下一行开始改序号
    for (var i = currentCellRow + 1; i < DataGridView.RowCount; i++)
    {
        DataGridView[0, i].Value = (Convert.ToInt32(DataGridView[0, i].Value) - 1).ToString();
    }

    DataGridView.Rows.RemoveAt(currentCellRow);
}

  删除前:

  删除后

 

标签:控件,菜单,删除,RowIndex,DataGridView,右键,序列号,datagridview
From: https://www.cnblogs.com/shieryoufeng/p/17791944.html

相关文章

  • vscode右键没有open with live server
    写原生界面时右击html查看效果看结果没有liveserver如:安装插件"liveserver"......
  • DataGridView导出EXCEL
    publicclassexecl{///<summary>///导出EXECLDataGridViewX///</summary>///<paramname="dataGridView">DataGridViewX</param>///<paramname="IsVisible">是否导出隐......
  • esxi8.0序列号
    VMwarevSphereESXi8.0ESXi8:4V492-44210-48830-931GK-2PRJ4VCSA8:0Z20K-07JEH-08030-908EP-1CUK4ESXi8:4F40H-4ML1K-M89U0-0C2N4-1AKL4VCSA8:0F41K-0MJ4H-M88U1-0C3N0-0A214ESXi8:HG00K-03H8K-48929-8K1NP-3LUJ4VCSA8:4F282-0MLD2-M8869-T89G0-CF240vSAN8:NF212-08H......
  • 金蝶云星空调用《其他入库单》的新增界面给序列号子单据体数据赋值
     金蝶云星空调用《其他入库单》的新增界面给序列号子单据体数据赋值 金蝶云星空平台,业务对象的实体层级关系,表头,表头下可以有多个单据体,各单据体之间无关联,单据体下可以有子单单据体。另外各个实体都可以设置拆分表。比如,《其他入库单》表头有客户、日期、单据编号等,有拆分表......
  • C#之重新绘制DataGridView的选择框
    ///<summary>///重新绘制DataGridView的选择框///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidDgvUrlPath_CellPainting(objectse......
  • 解决VS Code/Code insiders右键python代码无法“转到定义”问题
    最近怀疑自己用了个假的VSCode,同门的能丝滑跳转定义、跳转引用,自己的偏偏不行(合着这么爽的功能我从来没享受到(。﹏。*)),网上各种教程试了个遍都不行,最后自己摸索出了解决方案。记录在此备忘:按以下顺序依次Check:确保安装这些插件:Python、Pylance、IntelliCode(用远程服......
  • VSCode注册右键打开方式
    通过注册表进行注册右键。新建任意文件1.reg将D:\MicrosoftVSCode\Code.exe替换成自己的路径,然后复制保存到1.reg双击运行即可。WindowsRegistryEditorVersion5.00[HKEY_CLASSES_ROOT\*\shell\VSCode]@="OpenwithCode""Icon"="D:\\MicrosoftVSCode\\Code.exe......
  • 关于Winform中使用DataGridView显示数据时,CheckBox选中状态异常问题
    使用C#创建的Winfrom项目,使用DataGridView显示数据,第一列中使用了DataGridViewCheckBoxColumn实现复选功能。但是当我绑定好数据后测试时,发现勾选和取消勾选的操作表现完全不按照预想的来——连续勾选几行后取消其中部分行的选中状态,再重复选中和取消时,原本不该被选中的checkBox......
  • DataGridView1列宽根据内容自适应
    DataGridView1列宽根据内容自适应在使用DataGridView控件时,要使列宽根据内容自适应,你可以使用DataGridView的AutoResizeColumns方法。这个方法允许你根据列中的内容来自动调整列的宽度。你可以选择调整所有列的宽度或者只调整特定列的宽度。以下是如何使用C#代码来自适应DataGri......
  • DataGridView绑定DataTable的建议方式
    DataGridView绑定DataTable的建议方式1.将DataTable绑定到BindingSource2.将BindingSource绑定到DataGridView3.DataGridView修改完要从Datatable取值时,同步过去时,BindingSource和DataGridView两个都要执行EndEdit()publicpartialclassForm1:Form{D......