调用方式:
在下拉框响应中
ID = 1;//这个自己定义大小
函数();
注释:
1、ID区分不同下拉框
2、xia[ID]:下拉框地址
3、c_num[ID]:字符串
4、num[ID]:整型
5、null或空为下拉框第一项数据,此项数据不删除
6、DeleteString删除
7、InsertString插入
8、GetCurSel获取当前选中项序号
9、GetLBText获取当前选中数据
CString add = "";
CString add1 = "";
int com = ((CComboBox*)GetDlgItem(xia[ID]))->GetCurSel();
((CComboBox*)GetDlgItem(xia[ID]))->GetLBText(com,add);
/*********删除********/
int a = 0;
int mm = 0;
for(int k = 0; k < 50; k++)
{
if(k != ID)
{
a = ((CComboBox*)GetDlgItem(xia[k]))->GetCount();
for(int i = 1; i < a; i++)
{
((CComboBox*)GetDlgItem(xia[k]))->GetLBText(i,add1);
if(!add1.Compare(add))//比较大小函数,add1和add相同返回0,0为false,取反为true
{
mm = i;
}
}
if(mm != 0)
((CComboBox*)GetDlgItem(xia[k]))->DeleteString(mm);
}
}
/*******恢复********/
if(c_num[ID].Compare("null") && c_num[ID].Compare(""))
{
if(c_num[ID].Compare(add))
{
int ll[50];
for(int i = 0; i < 50; i++)
{
ll[i] = 0;
}
for(int k = 0; k < 50; k++)
{
if(k != ID)
{
a = ((CComboBox*)GetDlgItem(xia[k]))->GetCount();
for(i = 1; i < a; i++)
{
((CComboBox*)GetDlgItem(xia[k]))->GetLBText(i,add1);
ll[i] = atoi(add1);
}
for(i = 0; i < a; i++)
{
if(ll[i] < atoi(c_num[ID]) && ll[i+1] > atoi(c_num[ID]))
{
((CComboBox*)GetDlgItem(xia[k]))->InsertString(i+1,c_num[ID]);
}
else if(i+1 == a)
{
if(ll[a-1] < atoi(c_num[ID]))
{
((CComboBox*)GetDlgItem(xia[k]))->InsertString(i+1,c_num[ID]);
}
}
}
}
}
}
}
num[ID] = com;
((CComboBox*)GetDlgItem(xia[ID]))->GetLBText(num[ID],c_num[ID]);
算法还可以简化,但懒的弄了
PS: 测试50个下拉框同时调用一组数据没有问题。