多个下拉框同组数据不同选项的算法

调用方式:

在下拉框响应中

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个下拉框同时调用一组数据没有问题。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值