C# checkboxlist的使用

时间:2022-09-07 15:31:02

最近做项目,需要用到checklistbox这一控件,由于对这一控件并不是很熟悉,导致在此浪费了一点时间。

http://www.cnblogs.com/hongfei/archive/2012/12/21/2828408.html

for (int i = ; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemChecked(i))
{
MessageBox.Show(checkedListBox1.GetItemText(checkedListBox1.Items[i]));
}
}
参考:
最近用到checklistbox控件,在使用其过程中,花了较多的时间,这里我收集了其相关的代码段,希望对大家有所帮助。
.
添加项
checkedListBox1.Items.Add("蓝色");
checkedListBox1.Items.Add("红色");
checkedListBox1.Items.Add("黄色"); .
判断第i项是否选中,选中为true,否则为false
if(checkedListBox1.GetItemChecked(i))
{
return true;
}
else
{
return false;
} .
设置第i项是否选中
checkedListBox1.SetItemChecked(i, true); //true改为false为没有选中。 .
设置全选
添加一个名为select_all的checkbox控件,由其控制checkedListBox是全选还是全不选。
private void select_all_CheckedChanged(object sender, EventArgs e)
{
if(select_all.Checked)
{
for (int j = ; j < checkedListBox1.Items.Count; j++)
checkedListBox1.SetItemChecked(j, true);
}
else
{
for (int j =; j < checkedListBox1.Items.Count; j++)
checkedListBox1.SetItemChecked(j, false);
}
} .
得到全部选中的值,并将选中的项的文本组合成为一个字符串.
string strCollected = string.Empty;
for (int i = ; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemChecked(i))
{
if (strCollected == string.Empty)
{
strCollected = checkedListBox1.GetItemText(checkedListBox1.Items[i]);
}
}
else
{
strCollected = strCollected + "/" + checkedListBox1.
GetItemText(checkedListBox1.Items[i]);
}
} .
设置CheckedListBox中第i项的Checked状态
checkedListBox1.SetItemCheckState(i, CheckState.Checked);
.
private void checkBoxAll_CheckedChanged(object sender, EventArgs e)
{
if (checkBoxAll.Checked)
{
//被选择了则将CheckedListBox中的所有条目都变为Checked状态
for (int i = ; i < checkedListBoxLayerControl.Items.Count;i++)
{
checkedListBoxLayerControl.SetItemCheckState(i,
CheckState.Checked);
}
}
else
{
//否则变成Unchecked状态
for (int i = ;i < checkedListBoxLayerControl.Items.Count; i++)
{
checkedListBoxLayerControl.SetItemCheckState(i, CheckState.Unchecked);
}
}
} .
checkedListBox 单选设置(代码实现)
private void chkl_ItemAuditing_ItemCheck(object sender,ItemCheckEventArgs e)
{
if (chkl_ItemAuditing.CheckedItems.Count > )
{
for (int i = ; i < chkl_ItemAuditing.Items.Count; i++)
{
if (i != e.Index)
{
this.chkl_ItemAuditing.SetItemCheckState(i,
System.Windows.Forms.CheckState.Unchecked);
}
}
}
} .
checkedListBox1显示一个数据库中关键字对应的所有记录
for (int i = ; i < table.Rows.Count; i++)
{
string name = table.Rows["myname"].ToString();
string paw = table.Rows["mypaw"].ToString();
checkedListBox1.Items.Add(name + paw);
} .
for(i=;i<CheckedListBox.Items.Count;i++)
{
if(CheckedListBox.GetItemText(CheckedListBox.Items)=="你得到的值")
{
CheckedListBox.SetItemChecked(i,true);
}
} .
清除checkedListBox1中所有的选项
for (int i = ; i < checkedListBox1.Items.Count; i++)
{
checkedListBox1.Items.Clear();
} .
//设置索引为index的项为选中状态
for (int i = ; i < checkedListBox1.Items.Count; i++)
{
checkedListBox1.SetItemChecked(i, true);
} .
for (int i = ; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetSelected(i))
{
MessageBox.Show(checkedListBox1.CheckedItems.ToString());
}
} .
//选中checkedListBox1所有的选项
for(int i = ; i < checkedListBox1.Items.Count; i++)
{
checkedListBox1.SetItemCheckState(i, CheckState.Checked);
}
.
for (int i = ; i < checkedListBox1.Items.Count; i++)
{
//如果checkedListBox1的第i项被选中,
//则显示checkedListBox1对应的值
if (checkedListBox1.GetItemChecked(i))
{
MessageBox.Show(checkedListBox1.Items.ToString());
}
} .
//反向选择checkedListBox1的选项
for (int i = ; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemChecked(i))
{
checkedListBox1.SetItemChecked(i, false);
}
else
{
checkedListBox1.SetItemChecked(i, true);
}
}
.
//checkedListBox1中选定的项->checkedListBox2
for (int i = ; i < checkedListBox1.CheckedItems.Count; i++)
{
checkedListBox2.Items.Add(this.checkedListBox1.CheckedItems);
//remove是除去一个具体的值,不是index,注意了
this.checkedListBox1.Items.Remove(
this.checkedListBox1.CheckedItems);
}
.
//绑定数据
checkedListBox1.DataSource = dt;
checkedListBox1.DisplayMember = "item";
checkedListBox1.ValueMember = "code";
这个属性在checklistbox里是没有的,但是可以直接使用
.
for (int i = ; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemChecked(i))
{
checkedListBox1.SelectedIndex = i;
//利用SelectedValue取得Value值时,只能取得当前焦点项的值。所以要对整个CheckedListBox中的所有勾选项,让其都做一次焦点项才能取得所有勾选的项的值。
str+= checkedListBox1.SelectedValue;
}
}
.
CheckedlistBox控件比较有用到两个属性分别为CheckOnClick为True:表示单击就选中当前行,为False :要点两下才可以选中。(默认值为False)。还有一个属性为ThreeDCheckBoxes为True:表示三维的选中标记,为False:表示表面的显示标记。(默认值为False)。

在百度上找到了这篇,挺实用的。

但是,在得到value值时出现了有点问题。

由于我是在selectedindexchanges时触发读取value事件,导致在循环焦点项时发生无限循环的异常。

于是用了比较传统的手法来解决这个问题。

将所要得到的字符串定义成全局变量,在高亮处时判断是否被选中,选中则加上该value值,没有选中则替换掉该value值。

         /*
* 先修改checkonclick属性值,使得控件在单击时选中
*/
string s = string.Empty;
private void clbParameter_SelectedIndexChanged(object sender, EventArgs e)
{
// checkList.Clear(); QuotaModel Quota = new QuotaModel();
string ParameterText = "";//value值
string ParameterRowCol = "";//参数值 //string name=this.clbParameter.SelectedItem.ToString();
string name = this.clbParameter.Text;//当前checklistbox高亮文本值 string ParameterValue = string.Empty;
ParameterValue = this.clbParameter.SelectedValue.ToString();//当前checklistbox高亮value值 if (QuotaListCheck != null)
{ foreach (QuotaModel model in QuotaListCheck)
{
//获取行与列值
if (model.Quota_Id == ParameterValue)
{
Quota.Formext_Row = model.Formext_Row;
Quota.Formext_Col = model.Formext_Col;
ParameterRowCol = "${" + Quota.Formext_Col + Quota.Formext_Row + "}";
}
} } //选项状态改变时遍历判断是否被选中
for (int i = ; i < clbParameter.Items.Count; i++)
{
string ItemName = string.Empty;
ItemName = this.clbParameter.GetItemText(this.clbParameter.Items[i]);
if (clbParameter.GetItemChecked(i))
{
if (ParameterText != "")
{
ParameterText = ParameterText + "+";
}
ParameterText += ItemName; if (name.Equals(ItemName))
{
if (s != "")
{
s += "+";
}
s += ParameterRowCol;
}
}
else
{
if (name.Equals(ItemName))
{
int index = s.IndexOf(ParameterRowCol);
//if (s.Contains("+"))
if (index == ) //判断读取到的value值是否是在字符串的第一位
{ //若是第一位,判断后续是否还有其他字符
if (s.Contains("+")) //若有其他字符,连同后面的“+”号一块替换
{
ParameterRowCol += "+";
}
}
else
{ //如果不是在第一位,则删除该字符与之前的“+”号
ParameterRowCol = "+" + ParameterRowCol;
}
if (ParameterRowCol != "")
{
s = s.Replace(ParameterRowCol, "");
}
}
}
}
this.txtCheckValue.Text = ParameterText;
this.txtCheckParameter.Text = s;
}

C# checkboxlist的使用的更多相关文章

  1. MVC CheckBoxList的实现

    using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...

  2. HtmlHelper拓展实现CheckBoxList

    经过一番折腾(主要是SelectList这个类操作有些繁琐)实现了CheckBoxList,过程RadioList基本一样 拓展方法 public static MvcHtmlString Check ...

  3. CheckBoxList控件获取多选择&comma;需要遍历

    CheckBoxList控件获取多选择,需要遍历,环境:vs2008 在页面上添加CheckBoxList控件,输入项值 a,b,c,d.然后添加按钮 Button2确定,如何获取CheckBoxLi ...

  4. C&num;遍历得到checkboxlist选中值和设置选中项

    得到选中项的value值并拼接成一个字符串返回 public string GetChecked(CheckBoxList checkList, string separator) { string ...

  5. checkboxlist 下拉框多选功能 &comma;模拟dropdownlist带复选框效果

    前台代码 01.<html xmlns="http://www.w3.org/1999/xhtml"> 02.<head runat="server&q ...

  6. &period;NET MVC3中扩展一个HtmlHelper方法CheckBoxList

    MVC中有DropDownList方法,挺好用,可是最常用的需求,一组checkboxlist咋没个类似方法呢?郁闷之余,自己做一个吧,直接上代码 public static MvcHtmlStrin ...

  7. ASP&period;NET MVC 3 CheckBoxList 的使用

    在以前的 ASP.NET MVC 中可以直接使用 CheckBoxList,但后来不知道什么原因在 MVC 中移除了 CheckBoxList,所以默认情况下 ASP.NET MVC 3 中是没有 C ...

  8. CheckBoxList 用法

    <asp:CheckBoxList ID="cblqf" ForeColor="#4d6fc8" runat="server" Rep ...

  9. GridView 控件中如何绑定 CheckBoxList

    需求:设计这样一个页面,在页面上可以选择和展示各省份对应的文明城市? 思路:一次性查询出所需的记录(查询数据库的操作不宜写到 C# 代码的循环语句中),并保存到全局变量中,之后根据条件过滤出需要的.可 ...

  10. 20151215单选按钮列表&comma;复选框列表&colon;CheckBoxList

    单选框:RadioButton GroupName:组名,如果要实现单选效果每个单选按钮的组名必须一样 是否被选中 RadioButton.checked 单选按钮列表:RadioButtonList ...

随机推荐

  1. 贼溜的更新Android-SDK的方法(亲测很好用)

    启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」,弹出『Android SDK Manager - Settings』窗口:在『Androi ...

  2. mysql与oracle的存储过程有什么区别?

    MySQL存储过程 (1). 格式 MySQL存储过程创建的格式:CREATE PROCEDURE过程名 ([过程参数[,...]]) [特性 ...]过程体 案例分析: 参数 MySQL存储过程的参 ...

  3. spring2&period;5整合hibernate3&period;0

    第一步:配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...

  4. 【NOIP 2014 DAY1 T3】飞扬的小鸟(DP)

    题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...

  5. linux下负载均衡(LVS安装与配置)【转】

    一.LVS的三种包转发方式      LVS提供了三种包转发方式:NAT(网络地址映射).IP Tunneling(IP隧道).Direct Routing(直接路由)     不同的转发模式决定了不 ...

  6. 如何实现一个通用的IHttpHandler 万能的IHttpHandler HttpWebRequest文件上传

    昨天遇到一个比较奇怪的需求,大致是需要在服务器上部署一个http服务,但是服务的具体功能不知道,以后在客服端实现.这里介绍一下系统背景,有一个系统运(部署在美国)行了很多年了,给系统产生了很多文件,现 ...

  7. 戏说java多线程之CyclicBarrier(循环栅栏)的CyclicBarrier&lpar;int parties&rpar;构造方法

    CyclicBarrier是JDK 1.5 concurrent包出现的一个用于解决多条线程阻塞,当达到一定条件时一起放行的一个类.我们先来看这样一个简单的需求. 现在我有一个写入数据的类,继承Run ...

  8. 遇到的难题之一 —— js方法toFixd&lpar;&rpar;

    工作中遇到金额需要保留两位小数的需求,单价1.265,数量为1,正常来讲金额应为1.27,用了toFixd()方法后结果为1.26. 最终找到问题所在:1.265 - 1.26 = 0.0049999 ...

  9. 小程序里let和var以及const区别

    在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. [JavaScript] 纯文 ...

  10. 065 xftp的使用

    1.xftp 一个基于 MS windows 平台的功能强大的SFTP.FTP 文件传输软件 2.下载安装 *3.在linux上安装服务 sudo yum install vsftp