dataGridView绑定后

        bool[] mark = new bool[this.dataGridView1.Rows.Count];
for (int i = ; i < mark.Length; i++)
{ mark[i] = false;
}
//如果你想那个默认被选中 也把相应的mark[i]改为true;

在dataGridView1_CellContentClick事件中

       if (e.ColumnIndex == )
{
mark[e.RowIndex] = !mark[e.RowIndex];
}

在button_Click事件中

for (int i = ; i < mark.Length; i++)
{
if (mark[i])
MessageBox.Show(this.dataGridView1.Rows[i].Cells[].Value.ToString());
}

this.dataGridView1 添加了一个DataGridViewCheckBoxColumn 列 
为this.dataGridView1.Rows[0]

Cells[0]为checkboxcolumn
this.dataGridView1.Rows[i].Cells[1]为你绑定的数据

private void GetAllIetmDmodule()
{
IList<IetmDmodule> IetmDmodulelist = new List<IetmDmodule>();
IIetmDmoduleService IetmDmoduleService = new IetmDmoduleService();
IetmDmodulelist = IetmDmoduleService.GetAllIetmDmodule();
if (IetmDmodulelist != null)
{
foreach (IetmDmodule dmodule in IetmDmodulelist)
{
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.CreateCells(dataGridView1);
dgvRow.Cells[].Value = dmodule.Subject;
dgvRow.Cells[].Value = "";
dgvRow.Cells[].Value = dmodule.Creator;
dataGridView1.Rows.Add(dgvRow);
}
mark = new bool[this.dataGridView1.Rows.Count];
for (int i = ; i < mark.Length; i++)
{
mark[i] = false;
}
}
}

重新整理了一下.

一,如果数据源中有bool类型的列,在绑定之后会自动以checkbox的形式显示,
如果你的是这种情况,只需要在点击button的时候遍历判断即可.
如果数据源中没有可以采用下列方式添加:

ps:数据源为DataTable

//Add a Column with checkbox at last in the Grid
DataColumn dtcCheck = new DataColumn("IsMandatory");//create the data //column object with the name
dtcCheck.DataType = System.Type.GetType("System.Boolean");//Set its //data Type
dtcCheck.DefaultValue = false;//Set the default value
DataTable.Columns.Add(dtcCheck);//Add the above column to the //Data Table

二,数据源中没有,只是在DataGridView中存在.
手动添加为:右键点datagridview,编辑列,添加,设置其类型为datagridviewcheckbox
代码添加如下:

      this.dataGridView1.Columns.Insert(, new DataGridViewCheckBoxColumn()); 

            for (int i = ; i < this.dataGridView1.Rows.Count; i++)
{
//为datagridviewcheckbox列赋值
this.dataGridView1.Rows[i].Cells[].Value = true;
}

在DataGridView的CellContentClick事件下写

       private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//判断点的是否是datagridviewcheckbox列并且不是列头
if (e.ColumnIndex == && e.RowIndex != -)
{
//dataGridView1.Rows[e.RowIndex].Cells[0].Value = (bool)dataGridView1.Rows[e.RowIndex].Cells[0].EditedFormattedValue;
//两种皆可
dataGridView1.Rows[e.RowIndex].Cells[].Value = !(bool)dataGridView1.Rows[e.RowIndex].Cells[].Value;
}
}

在button的Click事件下:

     private void button_Click(object sender, EventArgs e)
{
for (int i = ; i < this.dataGridView1.Rows.Count; i++)
{
if ((bool)this.dataGridView1.Rows[i].Cells[].Value)
MessageBox.Show("选择的是第 " + (i+).ToString()+" 行");
}
}

在winform中给GridView加checkbox在按钮点击的时候获取选中的checkbox的更多相关文章

  1. 设计winform自带动态加载工具按钮和实现热键响应

    1.初衷 主要是想设计一个自带添加工具按钮和按钮的快捷键的基窗体.这样以后所设计的窗体只要继承自这个窗体就可以实现热键响应和动态加工具按钮的功能了 写这边文章主要是为了以后使用的时候有个参考,因为这只 ...

  2. Jquery获取选中的checkbox的值

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  3. 在 WinForm 中 如何实现 加载等待功能

    1,需要一个动态的londing文件:在项目中我们新建一个文件夹来存放它: 2,在需要出现londing状态的窗体上加上一个Panel: 黄色区域是Panel,灰色的是需要被加载的区域.当需要触发lo ...

  4. WinForm中实现Loading加载界面

    1,LoaderForm窗体中添加PictureBox,然后添加Loading图片 2,窗体内属性设置 StartPosition :CenterScreen在屏幕中心显示 TopMost:True置 ...

  5. Android中一张图片加载后所占用内存大小的获取与测试

    Android程序中一旦加载的图片比较多,就有可能出现Out of Memory而导致程序崩溃.这个一方面是因为Android系统本身对于每个单独的进程有内存大小的限制(有16M,64M,128M,2 ...

  6. WinForm中如何判断关闭事件来源于用户点击右上角的“关闭”按钮

    在C#的WinForm程序中,有的时候需要判定关闭请求从哪里发出来的.比如是用户点击了右上角的“关闭”按钮,还是调用了WinForm.Close()方法.最典型的是要知道点击右上角的“关闭”按钮发出的 ...

  7. 【转】GridView 加载空行并点击编辑每一个单元格

    代码 <script runat="server"> protectedvoid Button1_Click(object sender, System.EventAr ...

  8. JQuery判断checkbox选中,jquery获取选中的checkbox

    选中的radio $('input[name="radInvoiceType"]:checked').val(); 这样能获得 $('input[name="radInv ...

  9. angular JS中使用jquery datatable 自定义搜索按钮点击事件 和mRender的 ng-click事件

    'use strict'; app.controller('DataTableCtrl', function ($scope, $compile) { $scope.searchFiles = { n ...

随机推荐

  1. 剑指offer 面试6题

    面试6题: 题目:从尾到头打印链表 输入一个链表,从尾到头打印链表每个节点的值. 解题代码: # -*- coding:utf-8 -*- # class ListNode: # def __init ...

  2. 使用BUCK进行iOS项目打包

    关于BUCK BUCK是Facebook开源的快速打包工具,可以用于多种语言及平台的项目打包,例如:C.C++.Java.iOS.Android等等.用于大型的iOS.Android项目,可以显著提升 ...

  3. asp.net Cookie 用户登陆时记住我

    /// <summary> /// 判断Cookie中存储的数据 /// </summary> protected void CheckUserCookie() { //先判断 ...

  4. Linux用户和用户组管理 用户组管理命令

    添加用户组命令:groupadd 命令格式: [root@localhost ~]# groupadd [选项] 组名 选项: 选项 选项说明 -g GID 指定组ID: 修改用户组命令:groupm ...

  5. debian内核代码执行流程(二)

    继续上一篇文章<debian内核代码执行流程(一)>未完成部分. acpi_bus_init调用acpi_initialize_objects,经过一系列复杂调用后输出下面信息: [ IN ...

  6. cocos2dx打飞机项目笔记一:项目结构介绍

    最近在学习cocos2dx引擎,版本是2.1.3,开发环境是win7 + vs2010,模仿微信打飞机游戏,开发中参考了 csdn 偶尔e网事 的系列文章:http://blog.csdn.net/c ...

  7. CentOS7安装 VirtualBox虚拟机

    官方地址  : https://www.virtualbox.org/wiki/Linux_Downloads 1.导入 yum 源 Oracle Linux / RHEL #cd /etc/yum. ...

  8. java 反射机制复习笔记。

    1.java 反射的作用(好处): (1)能够使我们很方便的创建灵活的代码,这些代码可以在运行时装配(运行时获取一个类实例),就不用在组件之间进行源代码链接了,大大提高系统的灵活性和扩展性. (2)与 ...

  9. URL重写技术总结

    URL重写技术总结 概要:什么是url重写? URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程.比如浏览器发来请求 hostname/101.html ,服务器自动将这个请 ...

  10. eclipse添加删除插件-eclipse marketplace

    源文地址:http://jingyan.baidu.com/article/cdddd41c5c883353cb00e19e.html 在有些版本的eclips上并没有eclipse marketpl ...