VC/MFC基础,求高手~该如何处理
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
这两行数据。
请问像这种将数据分类显示的操作该如何实现?求参考代码,感谢~
------解决方案--------------------
如何将数据分类?
例如:列表框中有以下数据:
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
------解决方案--------------------
------解决方案--------------------
思路就是这样
------解决方案--------------------
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);