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

比如选择后点击“删除”按钮,进行删除,或选择后点击修改按钮,弹窗进行信息修改,现在CheckBox点不了勾,怎么写代码、求详细代码示范举例。勾选CheckBox怎么写?删... 比如选择后点击“删除”按钮,进行删除,或选择后点击修改按钮,弹窗进行信息修改,现在CheckBox点不了勾,怎么写代码、求详细代码示范举例。
勾选CheckBox怎么写?删除按钮怎么写?修改按钮怎么写?
展开
 我来答
百度网友ce7f3ccb4
2015-08-27 · TA获得超过1950个赞
知道大有可为答主
回答量:2299
采纳率:0%
帮助的人:1887万
展开全部
可能是你控件采用全局的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--;
}
}
msh1028
2017-08-01 · TA获得超过2.6万个赞
知道大有可为答主
回答量:1.9万
采纳率:62%
帮助的人:1072万
展开全部
两种方案:

给每一个CheckBox绑定一个ID在触发DataGridViewCheckBoxColumn时候将ID获取到放置于一个数组里面然后点击修改或者删除时候直接对数组进行操作,需要注意的是在取消选择的时候需要将数组中对应的值移除。
不使用DataGridViewCheckBoxColumn这个方法,在点击修改或删除时候,读取DataGridView第一行的数据,然后进行遍历找到所有选中的CheckBox找到对应的操作ID进行修改或删除(建议使用第一种方式)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友62bec5e9e
2017-07-09 · TA获得超过134个赞
知道小有建树答主
回答量:129
采纳率:54%
帮助的人:65.4万
展开全部

两种方案:

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式