c# winform 实现datagridview中datagridviewcheckboxcell的变通单一勾选

<p><span style="font-size: 10pt;">默认情况下 datagridviewcheckboxcolumn 是可以多选的<br>某些情况下 我们需要利用checkbox的可勾选及取消勾选的属性<br>来提供给用户选择项 同时需要勾选某项后 其他行的就取消勾选<br>如一组人员中 选择一个组长</span></p><p><span style="font-size: 10pt;">相关示例代码如下:</span></p><p><br><span style="font-size: 10pt;">//m_preroleid 之前组长的userid<br>//strcurrectchooseuserid 当前选择的组长的userid</span></p><p><span style="font-size: 10pt;">//datagridview绑定事件<br>private void initdatagridviewbind()<br>{<br> datatable dtnew = new datatable();<br> dtnew = globalstatic.gs_myws.monitorgetuseridinfo().tables[0];<br> //userid , userdesc , rolename<br> datacolumn colischecked = new datacolumn("ischecked");<br> colischecked.defaultvalue = false;<br> dtnew.columns.add(colischecked);</span></p><p><span style="font-size: 10pt;"> for (int i = 0; i < dtnew.rows.count; i++)<br> {<br> datarow dr = dtnew.rows[i];<br> if (dtnew.rows[i]["userid"].tostring() == m_preroleid)<br> {<br> dtnew.rows[i]["ischecked"] = true;<br> strcurrectchooseuserid = m_preroleid;<br> break;<br> }<br> }<br> this.datagridview1.autogeneratecolumns = false;<br> this.datagridview1.datasource = dtnew;<br>}</span></p><p><span style="font-size: 10pt;">//<br>private void <span style="color: #0000ff;">datagridview1_cellmousedown</span>(object sender, datagridviewcellmouseeventargs e)<br>{<br> if (e.columnindex != -1 && e.rowindex != -1)<br> {<br> if (((datagridviewtextboxcell)this.datagridview1.rows[e.rowindex].cells["rolename"]).value.tostring() == "组长")<br> {<br> if (((datagridviewtextboxcell)this.datagridview1.rows[e.rowindex].cells["userid"]).value.tostring() != m_preroleid)<br> {<br> messageinfoform.show("该客户端id已被其他客户端配置使用 不能再用于本客户端的配置");<br> }<br> else<br> {<br> if (e.columnindex != 0)<br> {<br> ((datagridviewcheckboxcell)this.datagridview1.rows[e.rowindex].cells["colischecked"]).value = true;//选择当前行的checkbox 并空置其他的行<br> for (int i = 0; i < this.datagridview1.rows.count; i++)<br> {<br> if (i != e.rowindex)<br> {<br> ((datagridviewcheckboxcell)this.datagridview1.rows[i].cells["colischecked"]).value = false;<br> }<br> }<br> this.datagridview1.rows[e.rowindex].selected = true;<br> strcurrectchooseuserid = ((datagridviewtextboxcell)this.datagridview1.rows[e.rowindex].cells["userid"]).value.tostring();<br> }<br> else<br> {<br> if (((datagridviewcheckboxcell)this.datagridview1.rows[e.rowindex].cells["colischecked"]).value.tostring() == "true")<br> {<br> strcurrectchooseuserid = "";<br> ((datagridviewcheckboxcell)this.datagridview1.rows[e.rowindex].cells["colischecked"]).value = false;<br> }<br> else<br> {<br> strcurrectchooseuserid = ((datagridviewtextboxcell)this.datagridview1.rows[e.rowindex].cells["userid"]).value.tostring();<br> for (int i = 0; i < this.datagridview1.rows.count; i++)<br> {<br> if (i != e.rowindex)<br> {<br> ((datagridviewcheckboxcell)this.datagridview1.rows[i].cells["colischecked"]).value = false;<br> }<br> }<br> ((datagridviewcheckboxcell)this.datagridview1.rows[e.rowindex].cells["colischecked"]).value = true;<br> }<br> }<br> }<br> }<br> else<br> {<br> if (e.columnindex != 0)<br> {<br> for (int i = 0; i < this.datagridview1.rows.count; i++)<br> {<br> if (i != e.rowindex)<br> {<br> ((datagridviewcheckboxcell)this.datagridview1.rows[i].cells["colischecked"]).value = false;<br> }<br> }<br> ((datagridviewcheckboxcell)this.datagridview1.rows[e.rowindex].cells["colischecked"]).value = true;//选择当前行的checkbox 并空置其他的行<br> this.datagridview1.rows[e.rowindex].selected = true;<br> strcurrectchooseuserid = ((datagridviewtextboxcell)this.datagridview1.rows[e.rowindex].cells["userid"]).value.tostring();<br> }<br> else<br> {<br> if (((datagridviewcheckboxcell)this.datagridview1.rows[e.rowindex].cells["colischecked"]).value.tostring() == "true")<br> {<br> strcurrectchooseuserid = "";<br> ((datagridviewcheckboxcell)this.datagridview1.rows[e.rowindex].cells["colischecked"]).value = false;<br> }<br> else<br> {<br> strcurrectchooseuserid = ((datagridviewtextboxcell)this.datagridview1.rows[e.rowindex].cells["userid"]).value.tostring();<br> for (int i = 0; i < this.datagridview1.rows.count; i++)<br> {<br> if (i != e.rowindex)<br> {<br> ((datagridviewcheckboxcell)this.datagridview1.rows[i].cells["colischecked"]).value = false;<br> }<br> }<br> ((datagridviewcheckboxcell)this.datagridview1.rows[e.rowindex].cells["colischecked"]).value = true;<br> }<br> }<br> }<br> }<br>}</span></p><p><span style="font-size: 10pt;">//上任组长显蓝色<br>//当前选择的组长显红色<br>//一般组员默认黑色<br>private void <span style="color: #0000ff;">datagridview1_cellformatting</span>(object sender, datagridviewcellformattingeventargs e)<br>{<br> if (((datagridviewtextboxcell)this.datagridview1.rows[e.rowindex].cells["rolename"]).value.tostring() == "组长")<br> {<br> if (((datagridviewtextboxcell)this.datagridview1.rows[e.rowindex].cells["userid"]).value.tostring() == m_preroleid)<br> {<br> this.datagridview1.rows[e.rowindex].cells["rolename"].style.forecolor = color.blue;<br> }<br> else<br> {<br> this.datagridview1.rows[e.rowindex].cells["rolename"].style.forecolor = color.red;<br> }<br> }<br>}</span></p>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值