winform中checklistbox如何只能任选两项?
发布网友
发布时间:2023-11-13 02:18
我来回答
共2个回答
热心网友
时间:2024-11-24 03:27
定义一个全局变量 Queue index = new Queue();
private void checkedListBox2_ItemCheck(object sender, ItemCheckEventArgs e)
{
int a = e.Index;
int b;
if (!checkedListBox2.GetItemChecked(e.Index))//当选中时判断队列里有几个值,e.Index是当前选中项的序列号
{
if (index.Count <3)//设置想要最多选几项
{
index.Enqueue(a);
}
else
{
b = (int)index.Dequeue();//获得最初选中的项
checkedListBox2.SetItemCheckState(b, CheckState.Unchecked);//将最初选的项反选
index.Enqueue(a);//加入新选的项
}
}else//选中后进入队列,然后不选,将队列里选中的项去掉,但是不打乱队列顺序
{
ArrayList copy = new ArrayList();
int count = index.Count;
for (int i = 0; i < count; i++)
{
copy.Add(index.Dequeue());
}
for (int i = 0; i < copy.Count;i++ )
{
if ((int)copy[i] != a)
{
index.Enqueue((int)copy[i]);
}
}
}
}
热心网友
时间:2024-11-24 03:28
做一个队列,然后注册Checked事件,每次check都把当前项扔到队列里面,再判断当队列长度大于2的时候,从队列里取出最早check的值,uncheck他就行了