DEV CheckComboboxEdit、CheckedListBoxControl(转)
CheckComboboxEdit
//先清空所有,若在窗体Load事件中,也可以不清空
//cbRWYs.Properties.Items.Clear();
var RwyList = tspro.Airport.Rwydirs.Select(c=>new { c.RUNWAY_DIRECTION_UUID, c.DESIGNATOR }).ToList(); //设置值列表
//combobox赋值
CheckedListBoxItem[] itemListQuery = new CheckedListBoxItem[RwyList.Count];
for (int i = 0; i < RwyList.Count; i++)
{
itemListQuery[i] = new CheckedListBoxItem(RwyList[i].RUNWAY_DIRECTION_UUID, RwyList[i].DESIGNATOR);
}
cbRWYs.Properties.Items.AddRange(itemListQuery);
//cbRWYs.Properties.ShowPopupCloseButton = false; //是否显示Cancel按钮
//cbRWYs.Properties.ShowButtons = false;//是否显示Ok Cancel按钮
//cbRWYs.Properties.SelectAllItemVisible = false; //不显示Select All选项
cbRWYs.Properties.SelectAllItemCaption = "全选"; //将Select All 选择改名
//目前没找到更改Ok,Cancel按钮的方法,可能不支持改这两个按钮
//赋值
foreach (CheckedListBoxItem airportItem in this.cbxServedAirport.Properties.Items)
{
if (CmmUtils.GetString(airportItem.Value) == despTSData.AIRPORT_NAME)
{
airportItem.CheckState = CheckState.Checked;
}
else
{
airportItem.CheckState = CheckState.Unchecked;
}
}
//全选用CheckAll
//清空项
checkedComboBoxEdit1.Properties.Items.Clear();
//自定义数组
string[] strs=new string[]{"新建","审批中","已完成","已撤销"};
//添加项
checkedComboBoxEdit1.Properties.Items.AddRange(strs);
//设置选中状态
if(checkedComboBoxEdit1.Properties.Items.Count>0){
//设置选中状态
checkedComboBoxEdit1.Properties.Items[strs[0]].CheckState = CheckState.Checked;
//设置选项是否可用
checkedComboBoxEdit1.Properties.Items[strs[0]].Enabled = false;
}
//取值
checkedComboBoxEdit1.EditValue.ToString();
//获取各项值 放在List集合中
List<object> List = checkedComboBoxEdit1.Properties.Items.GetCheckedValues();
//注意 当取得值是多项时,各项之间的间隔是 英文状态下 逗号+空格
//转换方法
string result = checkedComboBoxEdit1.EditValue.ToString().Replace(", ", ",");
//是否显示 确定、取消按钮
checkedComboBoxEdit1.Properties.ShowButtons = false;
//是否显示 取消按钮
checkedComboBoxEdit1.Properties.ShowPopupCloseButton = false;
//下拉显示项的个数 (设置为下拉个数加1正好可以显示全部,因为有一行是全选项)
checkedComboBoxEdit1.Properties.DropDownRows = checkedComboBoxEdit1.Properties.Items.Count + 1;
CheckedListBoxControl
//自定义一个表
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Columns.Add("Sex");
for (int i = 0; i < 30; i++) {
DataRow dr = dt.NewRow();
dr["ID"] = i + 1;
dr["Name"]=Convert.ToString((char)(65+i))+Convert.ToString((char)(65+i));
dr["Sex"] = i % 2==0?"男":"女";
dt.Rows.Add(dr);
}
//清空项
checkedListBoxControl1.Items.Clear();
//绑定
checkedListBoxControl1.DataSource = dt;
checkedListBoxControl1.ValueMember = "ID";
checkedListBoxControl1.DisplayMember = "Name";
//全选
//checkedListBoxControl1.CheckAll();
//项的个数
int itemCount = checkedListBoxControl1.ItemCount;
//添加项(如果设置绑定,添加项无效)
checkedListBoxControl1.Items.Add("kk");
//设置选中状态、显示值、实际值、是否可用(如果设置绑定,这些将会无效)
checkedListBoxControl1.Items[0].CheckState = CheckState.Checked;
checkedListBoxControl1.Items[0].Description = "显示值";
checkedListBoxControl1.Items[0].Value = "实际值";
checkedListBoxControl1.Items[0].Enabled = false;
//效果和上面一样
checkedListBoxControl1.SetItemChecked(0, true);
checkedListBoxControl1.SetItemCheckState(0, CheckState.Checked);
checkedListBoxControl1.SetItemValue("实际值",0);
//是否被勾选
bool isChecked= checkedListBoxControl1.GetItemChecked(0);
//获取某项状态
string checkState = checkedListBoxControl1.GetItemCheckState(0).ToString();
//获取某项绑定值 valueMember
string trueValue = checkedListBoxControl1.GetItemValue(0).ToString();
//获取某项显示值 displayMember
string disValue = checkedListBoxControl1.GetDisplayItemValue(0).ToString();
string disValue2 = checkedListBoxControl1.GetItemText(0);
//是否点击一次 就改变状态
checkedListBoxControl1.CheckOnClick = true;
//是否多列显示
checkedListBoxControl1.MultiColumn = true;
//checkedListboxControl 是否获得焦点
bool isfocus=checkedListBoxControl1.ContainsFocus;
//实现单选功能
checkedListBoxControl1.SelectedIndexChanged += new EventHandler(checkedListBoxControl1_SelectedIndexChanged);
//获取选中项的绑定值(前提:手动添加的可以获取,但是datatable绑定的无法获取)
List<object> objList = checkedListBoxControl1.Items.GetCheckedValues();
void checkedListBoxControl1_SelectedIndexChanged(object sender, EventArgs e)
{
int index=checkedListBoxControl1.SelectedIndex;
for (int i = 0; i < checkedListBoxControl1.ItemCount; i++) {
if (i != index)
{
checkedListBoxControl1.SetItemChecked(i, false);
}
}
}