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()+" 行");
}
}

最新文章

  1. delegate用法
  2. Mac系统如何编辑hosts文件
  3. H5移动端知识点总结
  4. mysql创建用户
  5. 在gradle 中使用ant 执行 “命令行”(CMD)不出日志解决方案
  6. H3C S5000和H3C S5500,俺来罗
  7. springMVC 注解版
  8. WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿
  9. 封装ReaderWriterLockSlim
  10. ucos2.86的任务调度漏洞
  11. MySQL5.6的optimizer_trace
  12. sort函数的用法与实验
  13. 文件比较与同步工具——FreeFileSync
  14. Git—分支管理
  15. SpringBoot图片上传
  16. 【洛谷P2042】维护数列
  17. Tomcat报异常:Too many open files 的解决之路
  18. XMR恶意挖矿脚本处理笔记
  19. 《DSP using MATLAB》Problem 5.31
  20. SSH框架搭建demo

热门文章

  1. Ajax:js自执行函数、jsonp、cros
  2. eclipse(1)----ubuntu下的安装与配置
  3. 光标定位 + commonAncestor
  4. OC源文件扩展名
  5. OpenGL学习进程(2)OpenGL开发环境的搭建
  6. 03_Hadoop简单介绍以及版本信息
  7. php获取MAC地址
  8. Java系列之EJB 理解
  9. Linux环境下的图形系统和AMD R600显卡编程(2)——Framebuffer、DRM、EXA和Mesa简介
  10. MongoDB命令语法小用