vc中CComboBox索引问题
【问题描述】在vc中设置了组合框的内容(比如组合框中有COM1和LAN1),之后用GetCurSel()函数获取选中项(比如选择了COM1,则得到索引0),并用switc...
【问题描述】
在vc中设置了组合框的内容(比如组合框中有COM1和LAN1),之后用GetCurSel()函数获取选中项(比如选择了COM1,则得到索引0),并用switch来根据选中项做相应的处理(比如选择了COM1后进入case 0:并对COM1进行操作)。
但如果组合框的内容发生了变化(比如增加了ABC),则这时用GetCurSel()函数获取COM1项的索引值则为1了,case就进入了错误的分支。
请问能否让组合框中的内容与索引值绑定,而进入正确的分支呢? 展开
在vc中设置了组合框的内容(比如组合框中有COM1和LAN1),之后用GetCurSel()函数获取选中项(比如选择了COM1,则得到索引0),并用switch来根据选中项做相应的处理(比如选择了COM1后进入case 0:并对COM1进行操作)。
但如果组合框的内容发生了变化(比如增加了ABC),则这时用GetCurSel()函数获取COM1项的索引值则为1了,case就进入了错误的分支。
请问能否让组合框中的内容与索引值绑定,而进入正确的分支呢? 展开
2个回答
展开全部
索引值是控件本身的属性,没法和内容绑定。不知道你的组合框是在什么情况下发生变化的?我觉得应该在这个环节做些控制,使后面添加的内容都放到最后去。这样前面的索引仍然是正确的。实在不行,那就判断字符串好了。
追问
我在初始化对话框的时候用的是addstring函数,但是添加后好像控件进行了自动排序,所以,之后添加字符串后又重新进行了排序,所以获取索引就错了
追答
你用InsertString,不要用addString,这样就可以指定索引值了。另外,控件有个Sort属性,你把它设成False,这样,即使用addString顺序也不会重排。
展开全部
可以使用一个map<string, int>建立关联,
map<string, int> mapCOM;
mapCOM["COM1"] = 0;
mapCOM["COM2"] = 2;
CString strSel;
cmbox.GetWindowText(strSel);
string strKey = (LPCTSTR)strSel;
switch(mapCOM[strKey])
{
}
这样你只要取到当前选择的字符串内容就能得到正确的索引,
而不用关心在CComboBox中的位置。
map<string, int> mapCOM;
mapCOM["COM1"] = 0;
mapCOM["COM2"] = 2;
CString strSel;
cmbox.GetWindowText(strSel);
string strKey = (LPCTSTR)strSel;
switch(mapCOM[strKey])
{
}
这样你只要取到当前选择的字符串内容就能得到正确的索引,
而不用关心在CComboBox中的位置。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询