C# DataGridView中实现勾选存储数据和右键删除数据(示例代码)

C# DataGridView中实现勾选存储数据和右键删除数据的完整攻略如下:

1. 实现勾选存储数据

1.1. 勾选框的添加

在DataGridView控件中显示勾选框需要在列头添加一个CheckBox,将DataGridView的列属性的HeaderCell属性设置为DataGridViewCheckBoxColumn类型,示例代码如下:

DataGridViewCheckBoxColumn checkBoxColumn = new DataGridViewCheckBoxColumn();
dataGridView1.Columns.Insert(0, checkBoxColumn);
checkBoxColumn.HeaderText = "勾选";
checkBoxColumn.Name = "checkBoxColumn";

1.2. 获取勾选数据

首先需要定义一个Model来存储DataGridView中每一行数据,然后在勾选框的CellContentClick事件中获取勾选状态,并将勾选的行存储到List中,示例代码如下:

public class Model
{
    public bool Checked { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

List<Model> list = new List<Model>();

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == 0 && e.RowIndex >= 0)
    {
        bool isChecked = Convert.ToBoolean(dataGridView1.Rows[e.RowIndex].Cells[0].Value);
        string name = Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells[1].Value);
        int age = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[2].Value);

        if (isChecked)
        {
            Model model = new Model()
            {
                Checked = isChecked,
                Name = name,
                Age = age
            };
            list.Add(model);
        }
        else
        {
            Model model = list.FirstOrDefault(x => x.Name == name && x.Age == age);
            list.Remove(model);
        }
    }
}

1.3. 存储勾选数据

将获取的勾选数据存储到数据库中或者进行其他处理即可。

2. 右键删除数据

2.1. 右键菜单的添加

在DataGridView控件中添加右键菜单需要在DataGridView上添加一个ContextMenuStrip,然后将DataGridView的ContextMenu属性设置为该ContextMenuStrip,示例代码如下:

ContextMenuStrip menuStrip = new ContextMenuStrip();
ToolStripMenuItem deleteItem = new ToolStripMenuItem();
deleteItem.Text = "删除";
deleteItem.Click += new EventHandler(deleteItem_Click);
menuStrip.Items.Add(deleteItem);
dataGridView1.ContextMenuStrip = menuStrip;

2.2. 删除数据

在右键菜单的Click事件中获取选中的行,然后将选中的行从DataGridView中删除,示例代码如下:

private void deleteItem_Click(object sender, EventArgs e)
{
    foreach (DataGridViewRow row in dataGridView1.SelectedRows)
    {
        string name = Convert.ToString(row.Cells[1].Value);
        int age = Convert.ToInt32(row.Cells[2].Value);
        Model model = list.FirstOrDefault(x => x.Name == name && x.Age == age);
        list.Remove(model);
        dataGridView1.Rows.Remove(row);
    }
}

以上就是使用C# DataGridView中实现勾选存储数据和右键删除数据的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# DataGridView中实现勾选存储数据和右键删除数据(示例代码) - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 联想ThinkPad笔记本如何添加系统环境变量?

    以下是详细的攻略: 联想ThinkPad笔记本如何添加系统环境变量? 什么是系统环境变量? 在计算机操作系统(如Windows)中,环境变量是一组动态的值,它们可被操作系统或其他应用程序使用。系统环境变量是定义了操作系统的行为的变量,它们对整个系统生效,包括所有用户和应用程序的执行。添加系统环境变量可改变系统范围内的默认值,从而对系统的所有用户生效。 通常,…

    other 2023年6月27日
    00
  • Go并发编程中使用channel的方法

    下面我就来详细讲解Go并发编程中使用channel的方法的完整攻略。 什么是channel Go语言中的channel是一种通信机制,用于协调多个goroutine之间的交互和同步。简单来说,channel就是一个通道,通过它可以在goroutine之间传递数据,实现数据共享,实现同步或异步的通信。 channel的创建和关闭 channel是通过内置函数m…

    other 2023年6月27日
    00
  • Android11及以上文件读写权限申请详细介绍

    针对“Android11及以上文件读写权限申请详细介绍”的完整攻略,我将会从以下几个方面进行介绍: Android 11及以上文件读写权限简介 权限申请流程 示例说明 总结 1. Android 11及以上文件读写权限简介 从 Android 11 开始,应用程序需要获得存储权限才能访问外部存储设备上的文件。存储空间的使用分为两种类型:应用内部存储和外部存储…

    other 2023年6月27日
    00
  • 如何设置本地连接ip 本机固定IP地址设置方法

    如何设置本地连接IP – 本机固定IP地址设置方法 在本机上设置固定IP地址可以确保网络连接的稳定性和一致性。下面是设置本地连接IP的详细攻略: 步骤1:打开网络和共享中心 首先,打开控制面板并点击“网络和共享中心”。 步骤2:选择本地连接 在“网络和共享中心”窗口中,找到并点击“本地连接”(或其他类似名称的网络连接)。 步骤3:打开属性窗口 在“本地连接”…

    other 2023年7月30日
    00
  • JavaScript自定义鼠标右键菜单栏

    创建JavaScript自定义鼠标右键菜单栏的步骤如下: 第一步:创建一个菜单栏对象 创建一个菜单栏对象,用来存储菜单项和对应的点击事件,例如: const contextMenu = { "items": [{ "title": "复制", "action": function…

    other 2023年6月25日
    00
  • 公开个Nday(图)

    “公开个Nday” 是一种安全研究人员使用的策略,目的是披露漏洞细节并且向厂商提供时间限制内修复的机会。以下是一个完整的“公开个Nday”的攻略。 步骤一:发现漏洞 首先,需要通过各种技术手段来寻找漏洞,例如静态分析、数据流分析、模糊测试、代码审计等。一旦发现漏洞,需要尽可能详细地记录其细节,包括漏洞类型、漏洞触发条件、漏洞危害等。 步骤二:验证漏洞 在公开…

    other 2023年6月26日
    00
  • java动态线程池的简单实现思路

    Java动态线程池是Java中非常常用的一种多线程管理方式,可以根据实际情况灵活地维护线程池的大小和其它参数,以保证程序高效地运行。下面,我会详细讲解Java动态线程池的简单实现思路。 1. 使用线程池的好处 在传统的单线程以及诸如fork/join等方式下,我们很难进行多线程任务的管理,即无法根据任务的大小、复杂度等特点,来确定线程池中线程的数量,如果线程…

    other 2023年6月27日
    00
  • SQLServer2008提示评估期已过解决方案

    SQL Server 2008提示评估期已过解决方案 问题描述 在使用 SQL Server 2008 进行开发或管理数据库时,可能会发现在 SQL Server Management Studio 或其他管理工具的界面上经常会收到弹窗提示 “评估期已过” 的信息,该信息可能会干扰工作的进行,因此需要解决。 解决方案 1. 更新许可证密钥 如果您的 SQL …

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部