是这样的,我的dgv里面有这样的记录, select代表是否已经选择相当于checkedBox控件
select id name state
1 生产 运行
2 领料 执行
3 生产 运行
4 生产 完成
5 领料 执行我现在想要的效果就是选择name相同的列,如点击 select 列的id为1的行时,2 和 5就不能再选择,如果非要选择,就提示出错信息
如果先点击的事2,则1、3、4、5都不能选择。我用过CellBeginEdit、CellMouseClick、CellEndEdit事件,都不能很好的处理,请做过类似功能的人提供一下思路
select id name state
1 生产 运行
2 领料 执行
3 生产 运行
4 生产 完成
5 领料 执行我现在想要的效果就是选择name相同的列,如点击 select 列的id为1的行时,2 和 5就不能再选择,如果非要选择,就提示出错信息
如果先点击的事2,则1、3、4、5都不能选择。我用过CellBeginEdit、CellMouseClick、CellEndEdit事件,都不能很好的处理,请做过类似功能的人提供一下思路
解决方案 »
- showdialog在openforms中的问题
- 如何屏蔽Winform中WebBrowser加载页面时的鼠标漏斗样式?
- 如何设一个不限参数个数和类型的函数或类
- C# 如何访问共享文件
- WebBrowser1.DocumentText为何有时候无法赋值呢?
- 如何在asp.net页面中显示后台生成的内存图?
- datagrid删除一行出现的问题
- 反编译用什么好?
- 创建SQLDataReader类的对象问题??
- 这是实现一个域名解析功能的。但是会出错,哪个高手能帮我解决一下,我是一个初学者。。。。
- DataGridView的Cell里面如何画一条直线
- 百度google一起搜 www.pingjw.com/baidugoogle
给你思路吧:在每次选中以后,在第一次选中后,存入共性值到变量,比如第一次你选生产,那就把生产存起来.
下次再有选中记录时,进行判断,如果想同不执行操作.如果不同,重新存共性值,再进行dgv的循环遍历,把与共性值不同的行ReadOnly属性设为值.
{ if (e.ColumnIndex == 0)
if (this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].ReadOnly == true )
return;
for (int i = 0; i < this.dataGridView1.Rows.Count; i++)
if (this.dataGridView1.Rows[i].Cells[2].Value.ToString().Trim() != this.dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString().Trim())
this.dataGridView1.Rows[i].Cells[0].ReadOnly = true;
}
//有一个问题 就是所有checkedBox都不处于选中状态时,要把所有的checkedBox的ReadOnly 属性置为false,这个找不到一个好的事件来处理