DDX_CBIndex()中的值错误

Wrong value from DDX_CBIndex( )

本文关键字:错误 CBIndex DDX      更新时间:2023-10-16

我有以下

void AggiungiEsameDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_COMBO1, ComboBoxVoti);
CString a;
for (int i = 18; i <= 30; i++)
{
    a.Format(_T("%d"), i);
    ComboBoxVoti.AddString(a);
}

DDX_Text(pDX, IDC_EDIT1,nome);
DDX_CBIndex(pDX, IDC_COMBO1, voto);
}

具有CComboBox类型的ComboBoxVoti和类的成员。

如果我调用ComboBoxVoti.GetCurSel,我有确切的索引(0表示18,1表示19,依此类推),但在voto(由DDX_CBIndex链接)中,我有1表示18,3表示19,5表示20,7表示21,依此类推!!为什么?

正如Igor所写,您永远不应该在每次调用OnInitDialog时添加项目。

您可以使用**if(!pDX->m_bSaveAndValidate)**对此进行保护。

在将项目插入组合框之前,您应该清除该组合框,以将其重置为唯一的初始状态。