2017-07-04 91 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時,我將該字符串添加到組合框 –