winform checkedlistbox 把选中项的值附给textbox控件,只限止选中(勾选的)其中6项.现在就是限止不了个数

王彦涛_hb 2014-08-22 11:48:00


private void chbBreakDown_SelectedValueChanged(object sender, EventArgs e)
{
string s = "";
string m = "";
string msg = "";
if (chbBreakDown.CheckedItems.Count != 0)
{
for (int x = 0; x <= chbBreakDown.CheckedItems.Count - 1; x++)
{
s = s + chbBreakDown.CheckedItems[x].ToString() + ",";
}
txtbreakdown.Text = s.TrimEnd(',');
}
else
{
txtbreakdown.Text = "";
}
}
...全文
310 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
王彦涛_hb 2014-08-22
  • 打赏
  • 举报
回复
[quote=引用 4 楼 wangyantao_hb 的回复:] 设置选择或不选择 .SetItemChecked(index,true/false); 不要图省事用CheckedItems,这个只能获取选中的项,无法知道它们之前的位置 遍历,获取.GetItemChecked(index),看到底第几个被选中 //*************************************************** 弄不成啊
於黾 2014-08-22
  • 打赏
  • 举报
回复
设置选择或不选择 .SetItemChecked(index,true/false); 不要图省事用CheckedItems,这个只能获取选中的项,无法知道它们之前的位置 遍历,获取.GetItemChecked(index),看到底第几个被选中
王彦涛_hb 2014-08-22
  • 打赏
  • 举报
回复
[quote=引用 2 楼 wangyantao_hb 的回复:] 大于6项,怎么反选啊 private void chbBreakDown_SelectedValueChanged(object sender, EventArgs e) { string s = ""; if (chbBreakDown.CheckedItems.Count != 0) { for (int x = 0; x <= chbBreakDown.CheckedItems.Count - 1; x++) { s = s + chbBreakDown.CheckedItems[x].ToString() + ","; } if (txtbreakdown.Text.Split(',').Length > 5) { } else txtbreakdown.Text = s.TrimEnd(','); } else { txtbreakdown.Text = ""; } }
王彦涛_hb 2014-08-22
  • 打赏
  • 举报
回复
引用 1 楼 wangyantao_hb 的回复:
怎么限止只能选中其中六项啊
先判断若超过6个,然后把超出的反选吗 存放上一次选中的状态,怎么弄
於黾 2014-08-22
  • 打赏
  • 举报
回复
维护一个bool数组,里面存放上一次选中的状态 事件里判断选中个数,如果超过6个,通过跟数组中的数据比较,将最后选择的反选回去 或者在ItemCheck事件里判断,如果大于6个,将当前点选的值置为false
王彦涛_hb 2014-08-22
  • 打赏
  • 举报
回复
怎么限止只能选中其中六项啊
王彦涛_hb 2014-08-22
  • 打赏
  • 举报
回复
[quote=引用 17 楼 wangyantao_hb 的回复:] 谢谢!
於黾 2014-08-22
  • 打赏
  • 举报
回复
哪里不会? 你放的代码是你自己写的么? 如果是,就不应该不会. 如果不是,恶补基础吧. 都说到这份上了,如果还不会,那我是教不了你的
王彦涛_hb 2014-08-22
  • 打赏
  • 举报
回复
e.index是为了判断刚刚点到的是哪一个,好把它反选回去用的 否则你只知道选多了,然后如何处理? [quote=引用 17 楼 Z65443344 的回复:] e.index是为了判断刚刚点到的是哪一个,好把它反选回去用的 否则你只知道选多了,然后如何处理? //------------ 不会弄啊
於黾 2014-08-22
  • 打赏
  • 举报
回复
e.index是为了判断刚刚点到的是哪一个,好把它反选回去用的 否则你只知道选多了,然后如何处理?
於黾 2014-08-22
  • 打赏
  • 举报
回复
晕死 你会写 if (chbBreakDown.CheckedItems.Count != 0) 就不会写 if (chbBreakDown.CheckedItems.Count >6)
王彦涛_hb 2014-08-22
  • 打赏
  • 举报
回复
引用 12 楼 Z65443344 的回复:
在SelectedValueChanged事件里,你只能获取到改变后都选了什么,当前到底改了哪一个不知道 如果仅仅是改了就把值取出来,没问题.但是你还想如果大于6,就将当前点成true的改回false,那不知道到底点了哪个不就费劲了 用ItemCheck能取到点的是哪个,就不用自己另做个数组去自己比较判断了
//==== e.index当前数据行的索引。e.index<6 不行吧,我要的是选中任意6项
王彦涛_hb 2014-08-22
  • 打赏
  • 举报
回复
数据是这样绑定的: DataSet ds = objSystem_GuiGeCanShu.GetList("upID=195 order by guigename asc "); if (ds.Tables[0].Rows.Count > 0) { DataTable dt = ds.Tables[0]; foreach (DataRow dr2 in dt.Rows) { string classid = dr2["ID"].ToString(); string classname = dr2["GuiGeName"].ToString(); chbBreakDown.Items.Add(new ListItem(classname, classid)); } }
王彦涛_hb 2014-08-22
  • 打赏
  • 举报
回复
[quote=引用 12 楼 Z65443344 的回复:] ItemCheck事件里,e.Index就是点的那一项的索引 如果大于6,就执行SetItemChecked(e.Index,false); else,执行你之前写的输出显示 //-----------------------------怎么修改 if (chbBreakDown.CheckedItems.Count != 0) { for (int x = 0; x <= chbBreakDown.CheckedItems.Count - 1; x++) { if (chbBreakDown.GetItemChecked(x)) { if (s == string.Empty) { s = chbBreakDown.GetItemText(chbBreakDown.Items[x]); } else { s = s + "," + chbBreakDown.GetItemText(chbBreakDown.Items[x]); } } } txtbreakdown.Text = s.TrimEnd(','); } else { txtbreakdown.Text = ""; }
於黾 2014-08-22
  • 打赏
  • 举报
回复
ItemCheck事件里,e.Index就是点的那一项的索引 如果大于6,就执行SetItemChecked(e.Index,false); else,执行你之前写的输出显示
於黾 2014-08-22
  • 打赏
  • 举报
回复
在SelectedValueChanged事件里,你只能获取到改变后都选了什么,当前到底改了哪一个不知道 如果仅仅是改了就把值取出来,没问题.但是你还想如果大于6,就将当前点成true的改回false,那不知道到底点了哪个不就费劲了 用ItemCheck能取到点的是哪个,就不用自己另做个数组去自己比较判断了
王彦涛_hb 2014-08-22
  • 打赏
  • 举报
回复
[quote=引用 8 楼 wangyantao_hb 的回复:] 还是直接用ItemCheck事件吧,省事. //--------------------- 怎么弄
於黾 2014-08-22
  • 打赏
  • 举报
回复
还是直接用ItemCheck事件吧,省事.
王彦涛_hb 2014-08-22
  • 打赏
  • 举报
回复
头疼,怎么弄啊
gucangen 2014-08-22
  • 打赏
  • 举报
回复
直接定义个int类型的计数器用来++,--不行吗?

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧