winform中datagridview中的checkbox选中问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform中datagridview中的checkbox选中问题相关的知识,希望对你有一定的参考价值。
我在datagridview中的checkbox列,然后绑定数据后,其中有两列 quantity1 和quanlity2 ,现在要判断怎么选中的问题
1、当该行quantity1 = 0 时,点击该checkbox后,弹出对话框,提示不能选中。该checkbox点击后仍没有选中;
2、当该行quantity1>0 时,弹出对话框,让用户选择一个数,然后返回更新quanlity2。该checkbox选中。
3、当该checkbox已选中,然后再点击,则变为没有选中。
我现在已经实现问题3了,也能判断该checkbox是否为选中。但是如问题1,不管我怎么设置,它还是会选中。
对于问题2,我点击后,会选中,可是当quanlity2更新后,就变为没有选中了。 每次需要点击两次,才能改变选中状态....
然后感觉 this.datagridview1.row[e.rowindex].cell["check_column"].value=true 或者false 没有用。你只要点击了,它会自己赋值,你的赋值不起作用
请高手指点,一定高分相赠
谢谢大家,问题解决了,原因就是没有把checkboxcolumn设置为readonly,我说怎么赋值不起作用呢。
大家都答对了,不过没有办法可以把分数给每一个人。我这有给回答最详细的那位了。
最后不管怎么样,还是谢谢大家的热心
第一步 设置check_column.ReadOnly=true
第二步 添加dataGridView1.CellEnter事件
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
int n = e.RowIndex;
if (e.ColumnIndex == 0)
if (dataGridView1.Rows[n].Cells[1].Value.ToString() == "a")
dataGridView1.Rows[n].Cells[0].Value = true;
else
dataGridView1.Rows[n].Cells[0].Value = false;
上面的是我的程序里面的代码,虽然判断条件不一样,但大同小异。
我的程序运行成功。
这里你的第三个问题可能要改掉,你可以先判断你的value是否为true然后再赋值
第一个问题很好解决只要把我上面代码中的"a"换成"0"然后show一个MessageBox就可以了,第二个问题同理。
我想你自己没处理好的关键一步肯定是没设置check_column.ReadOnly.
祝你成功
欢迎交流。 参考技术A 在我做的程序中也是这样写的,例如:
this.dgRolePrivilege.Rows[i].Cells["Used"].Value = true;
有用的啊 参考技术B 你把checkbox设成只读的,自己在程序里赋值就好了
C#中的winform 程序怎样在datagridview 动态添加按钮行
相当于asp的GridView的button行一样
参考技术A 我今天也正好用到这个功能,把代码给你,你看看吧。DataTable
dtcom
=
new
DataTable();
dtcom.Columns.Add("Value",
typeof(string));
dtcom.Columns.Add("Name",
typeof(string));
DataRow
drSex;
drSex
=
dtcom.NewRow();
drSex[0]
=
"1";
drSex[1]
=
"a";
dtcom.Rows.Add(drSex);
drSex
=
dtcom.NewRow();
drSex[0]
=
"0";
drSex[1]
=
"b";
dtcom.Rows.Add(drSex);
//--
DataTable
dt
=
new
DataTable();
dt.Columns.Add("XH");
dt.Columns.Add("WLH");
dt.Columns.Add("WLM");
dt.Columns.Add("SL");
dt.Columns.Add("DJ");
dt.Columns.Add("ZZF",
typeof(string));
dt.Columns.Add("BZ");
DataRow
dr
=
dt.NewRow();
dr["XH"]
=
"1";
dr["WLH"]
=
"1234567";
dr["WLM"]
=
"德国汉堡制黄色书柜";
dr["SL"]
=
"12";
dr["DJ"]
=
"25610";
dr["ZZF"]
=
"0";
dr["BZ"]
=
"上墙安装";
DataRow
dr2
=
dt.NewRow();
dr2["XH"]
=
"2";
dr2["WLH"]
=
"1234567";
dr2["WLM"]
=
"德国汉堡制黄色书柜";
dr2["SL"]
=
"12";
dr2["DJ"]
=
"25610";
dr2["ZZF"]
=
"1";
dr2["BZ"]
=
"上墙安装";
DataRow
dr3
=
dt.NewRow();
dr3["XH"]
=
"3";
dr3["WLH"]
=
"1234567";
dr3["WLM"]
=
"德国汉堡制黄色书柜";
dr3["SL"]
=
"12";
dr3["DJ"]
=
"25610";
dr3["ZZF"]
=
"1";
dr3["BZ"]
=
"上墙安装";
dt.Rows.Add(dr);
dt.Rows.Add(dr2);
dt.Rows.Add(dr3);
DataGridViewComboBoxColumn
dcb
=
new
DataGridViewComboBoxColumn();
dcb.DataSource
=
dtcom;
dcb.ValueMember
=
"Value";
dcb.DisplayMember
=
"Name";
dcb.DataPropertyName
=
"ZZF";
dcb.HeaderText
=
"ZZF";
this.dataGridView1.Columns.Insert(0,
dcb);
dcb.Name
=
"ZZF";
this.dataGridView1.DataSource
=
dt;
//处理列无法点击排序
this.dataGridView1.EnableHeadersVisualStyles
=
false;
for
(int
i
=
0;
i
<
this.dataGridView1.Columns.Count;
i++)
this.dataGridView1.Columns[i].SortMode
=
DataGridViewColumnSortMode.NotSortable;
this.dataGridView1.Columns["ZZF"].DisplayIndex
=
5;
以上是关于winform中datagridview中的checkbox选中问题的主要内容,如果未能解决你的问题,请参考以下文章
C#winform程序中,将A窗体datagridview中选中的数据传到B窗体里面的各个文本框中进行修改
Winform 下,两个不同窗体的DataGridView控件中的数据间传值怎么解决?
C#winform 两个datagridview中的数据一键导出到同一个excel中两个sheet页里