winform dataGridView 中使用了DataGridViewCheckBoxColumn怎么进行选择后的事件处理。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform dataGridView 中使用了DataGridViewCheckBoxColumn怎么进行选择后的事件处理。相关的知识,希望对你有一定的参考价值。

比如选择后点击“删除”按钮,进行删除,或选择后点击修改按钮,弹窗进行信息修改,现在CheckBox点不了勾,怎么写代码、求详细代码示范举例。
勾选CheckBox怎么写?删除按钮怎么写?修改按钮怎么写?

可能是你控件采用全局的ReadOnly模式了,要想要可以勾选,又要只读模式,那么你必须一列一列的设置readonly属性全部true除了了你check列为false
一下是常用的处理方式,仅供参考
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Demo

    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();
            //测试数据()
            dataGridView1.Rows.Add(new object[]false,"删除","修改");
            dataGridView1.Rows.Add(new object[]  false, "删除1", "修改1" );
            dataGridView1.Rows.Add(new object[]  false, "删除2", "修改2" );
        
        //dataGridView的单元格点击事件
        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        
            if (e.RowIndex != -1&&e.ColumnIndex>0) 
            
                bool ischecked=(bool)dataGridView1.Rows[e.RowIndex].Cells[0].Value;
               // 其中dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex>]就是你当前点击的行对象,你可以得到点击行的ID,值等你想要的信息,然后做后续操作就可以了
                if (ischecked)
                
                    switch (e.ColumnIndex)
                    
                        case 1://这里弹出删除的窗口
                            MessageBox.Show("你点击了删除按钮");
                            break;
                        case 2://这里填写你跳转的窗口代码
                            MessageBox.Show("你点击了修改按钮");
                            break;
                    
                
                else
                    MessageBox.Show("请先勾选,然后进行操作!");
            
        
    

 具体效果就是这样的,3列 分别是 第一列 checkBox,第2,3列都是button列

我这个采用的列选项,列按钮来做,用户体验会更好的!!

追问

CheckBox勾选的问题解决了谢谢,我的意思是选择CheckBox后,整行的数据都被选中,点击删除,删除整行的数据这个怎么做?

追答

这个是一个逻辑问题啊!!
用了复选框了,你就根据复选框的状态来判断是否可以操作就是了!!
这个有什么困难呢?
int count=dataGridView_MeterType.Rows.Count;
for (int i = 0; i < count; i++)

DataGridViewRow dr = dataGridView_MeterType.Rows[i];
if ((bool)dr.Cells[0].Value)

//删除选定的所有行
dataGridView_MeterType.Rows.Remove(dr);
i--;
count--;

追问

如何表示我选中了多少个复选框?

追答

额!!代码都给你了,你自己看不懂么?

参考技术A 两种方案:

给每一个CheckBox绑定一个ID在触发DataGridViewCheckBoxColumn时候将ID获取到放置于一个数组里面然后点击修改或者删除时候直接对数组进行操作,需要注意的是在取消选择的时候需要将数组中对应的值移除。
不使用DataGridViewCheckBoxColumn这个方法,在点击修改或删除时候,读取DataGridView第一行的数据,然后进行遍历找到所有选中的CheckBox找到对应的操作ID进行修改或删除(建议使用第一种方式)
参考技术B

两种方案:

    给每一个CheckBox绑定一个ID在触发DataGridViewCheckBoxColumn时候将ID获取到放置于一个数组里面然后点击修改或者删除时候直接对数组进行操作,需要注意的是在取消选择的时候需要将数组中对应的值移除。

    不使用DataGridViewCheckBoxColumn这个方法,在点击修改或删除时候,读取DataGridView第一行的数据,然后进行遍历找到所有选中的CheckBox找到对应的操作ID进行修改或删除(建议使用第一种方式)

winform DataGridView 动态添加一列控件(自定义控件)

winform DataGridView 动态添加一列控件, 这列 是一个 自定义的 combobox控件。就是在 DataGridView 一加载的时候就添加上! 求帮助

参考技术A 使用DataGridView的模板,在模块中插入一个comboBox控件就可以了。追问

我的是自定义控件 不是自带的 combobox。

追答

new ComboBox()不就可以动态生成了吗? 谢谢

追问

new ComboBox() 你实力出来的也是 自带的combobox 啊 不是我组件里的combobox啊! 我的组件combobox 已经定义好了

追答

噢,,定义好了的可以直接引用Id就可以了嘛,添加到ItemTemplate模板中。谢谢

参考技术B 自定义模板啊 添加你定义的自定义控件你试试

以上是关于winform dataGridView 中使用了DataGridViewCheckBoxColumn怎么进行选择后的事件处理。的主要内容,如果未能解决你的问题,请参考以下文章

winform DataGridView 动态添加一列控件(自定义控件)

C# .net不同版本中winform控件 dataGrid /DataGrid/DataGridView 有啥区别

c# winform datagridview怎么能达到如图的效果

如何在 C# WinForms 中使用 LINQ 从 DataGridView 中选择多个字段

C# winform程序中如何向datagridview中添加一行

winform中datagridview 选中行操作的问题