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. 《Python 数据分析》笔记——pandas

    Pandas pandas是一个流行的开源Python项目,其名称取panel data(面板数据)与Python data analysis(Python 数据分析)之意. pandas有两个重要的 ...

  2. 《Python机器学习》笔记(三)

    使用scikit-learning 实现机器学习分类算法 分类算法的选择 没有免费的午餐理论:没有任何一种分类器可以在所有可能的应用场景下都有良好的表现. 实践证明,只有比较了多种学习算法的性能,才能 ...

  3. 【转】Python爬虫_示例

    爬虫项目:爬取汽车之家新闻资讯   # requests+Beautifulsoup爬取汽车之家新闻 import requests from bs4 import BeautifulSoup res ...

  4. swift的值类型和引用类型

    前言 最近在学设计模式中,发现 Swift 中的 struct,class 以及 enum 在一般的使用中能够做到互相替换,因此探究其背后的逻辑就十分有必要.而这一问题又引出了 Swift 中的值类型 ...

  5. 每天一个Linux命令(59)wget命令

        wget命令用来从指定的URL下载文件.     (1)用法:     用法:  wget  [参数]  [URL]     (2)功能:     功能:  wget命令用来从指定的URL下载 ...

  6. 每天一个Linux命令(47)route命令

        Linux系统的route命令用于显示和操作内核IP路由表(show / manipulate the IP routing table).     (1)用法:     用法:  route ...

  7. hadoop02---高可用网站架构

    tomcat每个请求都会占用内存cpu,tomcat没有代理功能.nginx是俄国人写的,nginx是静态资源服务器,既可以自己返回请求,也可以做代理进行转发,和负载均衡.Tomcat是动态资源jav ...

  8. Java系列之EJB 理解

    EJB = Enterprise Java Bean,它和JavaBean有本质的区别,最好不要将他们混淆起来,就像不要将Java和 Javascript混淆起来一样.EJB有3中类型:Session ...

  9. STM32探秘 之FSMC

    源:STM32探秘 之FSMC STM32 FSMC总线深入研究

  10. 以太网100Mhz频率为什么可以达到带宽1000Mbps

    转: https://wenku.baidu.com/view/353ea8ecb0717fd5370cdc0b.html