首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VC/MFC基础,求高手~该如何处理

2012-04-20 
VC/MFC基础,求高手~如何将数据分类?例如:列表框中有以下数据:A,0021,1B,0022,2C,0023,2D,0024,3E,0025,3在

VC/MFC基础,求高手~
如何将数据分类?
例如:列表框中有以下数据:
A,0021,1
B,0022,2
C,0023,2
D,0024,3
E,0025,3
在下拉框中分别有三个选项:“1”,“2”,“3”。

我点击“1”的时候,列表框中只显示A,0021,1 这行数据。

我点击“2”时列表框中只显示
B,0022,2
C,0023,2
这两行数据。

我点击“3”的时候,列表框中只显示
D,0024,3
E,0025,3
这两行数据。

请问像这种将数据分类显示的操作该如何实现?求参考代码,感谢~

[解决办法]

C/C++ code
void CTest08Dlg::OnSelchangeCombo1() {    // TODO: Add your control notification handler code here    CComboBox *pComboBox = (CComboBox *)(GetDlgItem(IDC_COMBO1));    CString strTemp;    pComboBox->GetLBText(pComboBox->GetCurSel(), strTemp);    int nCurrentSel = atoi(strTemp);    vector<CString> vecDisplay;    CString strArr[5];    strArr[0] = "A,0021,1";    strArr[1] = "B,0022,2";    strArr[2] = "C,0023,2";    strArr[3] = "D,0024,3";    strArr[4] = "E,0025,3";    int nIndex = 0;    for(int i = 0; i < 5; i++)    {        nIndex = atoi(strArr[i].Right(1));        if(nIndex == nCurrentSel)        {            vecDisplay.push_back(strArr[i]);        }    }    vector<CString>::iterator iter;    for(iter = vecDisplay.begin(); iter != vecDisplay.end(); iter++)    {        TRACE(*iter);        TRACE("\n");    }}
[解决办法]
分类就是1,显示一行,2显示2行,3也显示2行,那4呢 ,如果有的话怎么显示
[解决办法]
自己设计一个类A
里面有ID(比如,1,2,3,4.。。)
vector<string> 比如:(D,0024,3),(E,0025,3")

然后,vector<A>
COMBBOX里面显示的是ID,然后,对应的是里面的string



[解决办法]
探讨

C/C++ code

void CTest08Dlg::OnSelchangeCombo1()
{
// TODO: Add your control notification handler code here
CComboBox *pComboBox = (CComboBox *)(GetDlgItem(IDC_COMBO1));
CString strTemp……

[解决办法]
思路就是这样
[解决办法]
CComboBox::FindString
int idx=FindString(0,"1");

[解决办法]
分两步:
1:响应下拉框的change事件
2:在下拉框的change事件中,先清除列表框中的数据,再根据选定的某个条件动态显示数据到列表框;
[解决办法]
为下拉框关联控件变量 mVC_MyCmb和CSTRING变量mVS_MyCmb;并添加selchange事件
事件代码如下
UpdateData();
mVC_MyCmb.ResetContent();
if ("1" == mVS_MyCmb)
{
mVC_MyCmb.AddString("A");
mVS_MyCmb = "A";
}
else if ("2" == mVS_MyCmb)
{
mVC_MyCmb.AddString("B");
mVC_MyCmb.AddString("C");
mVS_MyCmb = "B";
}
else ("3" == mVS_MyCmb)
{
mVC_MyCmb.AddString("D");
mVC_MyCmb.AddString("E");
mVS_MyCmb = "D";
}
UpdateData(FALSE);

热点排行