首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC ComboBox 控件添加項目重複的問題及解決

     編輯:程式設計綜合問答

現象描述

在 MFC 對話框程序中,向 CComboBox 控件動態添加項目(AddString),但在 OnSelchange 響應函數中調用 UpdateData 後,下拉列表中的項目會被重複創建多次。

原因分析

代碼添加項目的邏輯放置位置錯誤。若將 AddString 放在會被多次觸發的消息處理函數(如 OnSelchange、OnTimer、循環中)或 DoDataExchange 之後調用 UpdateData 導致數據交換時重複初始化,就會出現項目疊加。

正確做法

僅在對話框初始化階段添加項目,推薦重寫 OnInitDialog() 函數:

BOOL CMyDialog::OnInitDialog()
{
    CDialogEx::OnInitDialog();
    // 僅在這裡添加一次
    m_comboBox.AddString(_T("項目1"));
    m_comboBox.AddString(_T("項目2"));
    m_comboBox.SetCurSel(0); // 可選:設置默認選中
    return TRUE;
}

關鍵點

  • OnInitDialog 在對話框創建時僅執行一次,保證項目不重複。
  • 避免在數據交換(UpdateData)或選擇變更事件中修改控件內容。
  • 若項目需動態更新,先調用 ResetContent() 清空再重新填充。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved