2017-07-04 94 views
0

我正在读取文本文件中的字符串以填充对话框中的选项。问题是我需要删除列表中的重复值。我正在使用Visual C++。我正在使用Visual Studio 2008.如何删除组合框中的重复项

+1

您应该开始张贴一些代码,显示您迄今为止已尝试的内容以及您遇到的问题。 – Micho

+0

我使用组合框中的索引值将其过滤掉。 FindString方法返回找到的对象的第一个索引,所以我做的是 index = ComboBox.FindString(“”); (index <0) ComboBox.AddString(“New Value”);如果(索引<0) 和下一次迭代 这工作。 –

+0

如果它们已经存在,是不是更容易将它们事先插入组合中? FindStringExact是你的朋友。 – sergiol

回答

0

当您从文本文件中读取项目时,请使用map。它会消除所有重复的条目并将地图条目添加到列表中

0
BOOL CRemoveDuplicatedTextInComboBoxDlg::OnInitDialog() 
{ 
    ... 
    m_wholeText.AddString(_T("2")); 
    m_wholeText.AddString(_T("3")); 
    ... 
    m_wholeText.AddString(_T("6")); 
} 

void CRemoveDuplicatedTextInComboBoxDlg::OnBnClickedRemove() 
{ 
    // TODO: Add your control notification handler code here 
    INT nCount = m_wholeText.GetCount(); 
    if (nCount <= 0) return; 
    CString csz_compare1; 
    CString csz_compare2; 

    for (int i = 0; i < nCount; i++) 
    { 
     m_wholeText.GetLBText(i, csz_compare1); 
     for (int j = 0; j < nCount; j++) 
     { 
      m_wholeText.GetLBText(j, csz_compare2); 
      if (csz_compare1 == csz_compare2) 
      { 
       m_wholeText.DeleteString(j); 
       nCount--; 
      } 
     } 
    } 
} 
+0

谢谢。 我所做的是使用FindString来检查每个新条目。 FindString返回找到的第一个对象的索引。 因此,当这个索引小于0时,我将该字符串添加到组合框 –