繁体   English   中英

通过赋予组合框条件来将启用更改为禁用内容

[英]Changing the enabling to disabling content by giving condition to combo box

我在组合框中有一定的选择。 基于该选择,需要启用/禁用某些项目。 但是,我无法这样做。 还有另一个问题是,一旦选择了一个选项,我将无法将其更改为另一个选择而没有退格键并再次键入该选择。

m_d_lvlayers是组合框IDC的变量。 它的类型是CString

void CThermalToolDlg::OnCbnSelchangeLvLayers()
{
// TODO: Add your control notification handler code here
if (m_d_lvlayers == "2" )
{
    UpdateData();
    GetDlgItem(IDC_LV3_CU)->EnableWindow(0);
    GetDlgItem(IDC_LV3_ICI)->EnableWindow(0);
            //etc etc

    UpdateData(0);
}
else if (m_d_lvlayers == "3")
{
    UpdateData();
    GetDlgItem(IDC_LV3_CU)->EnableWindow(1);
    GetDlgItem(IDC_LV3_ICI)->EnableWindow(1);
            //etc etc

    UpdateData(0);
}
else
{
    UpdateData();
    GetDlgItem(IDC_LV3_CU)->EnableWindow(1);
    GetDlgItem(IDC_LV3_ICI)->EnableWindow(1);
    //etc etc

    UpdateData(0);
}

}

我希望在组合框中获得正确的选择以及相应的启用和禁用。

您需要调用UpdateData(TRUE); 首先

bSaveAndValidate

指示对话框是正在初始化(FALSE)还是正在检索数据 (TRUE)的标志

void CThermalToolDlg::OnCbnSelchangeLvLayers()
{
    UpdateData(TRUE); // Controls to Variables

    if (m_d_lvlayers == "2" )
    {
        GetDlgItem(IDC_LV3_CU)->EnableWindow(FALSE);
        GetDlgItem(IDC_LV3_ICI)->EnableWindow(FALSE);
        //etc etc

        UpdateData(FALSE);
    }
    else if (m_d_lvlayers == "3")
    {
        GetDlgItem(IDC_LV3_CU)->EnableWindow(TRUE);
        GetDlgItem(IDC_LV3_ICI)->EnableWindow(TRUE);
                //etc etc

        UpdateData(FALSE);
    }
    else
    {
        GetDlgItem(IDC_LV3_CU)->EnableWindow(TRUE);
        GetDlgItem(IDC_LV3_ICI)->EnableWindow(TRUE);
        //etc etc

        UpdateData(FALSE);
    }
}

尽管在您的代码中,调用UpdateData(FALSE);没有任何意义UpdateData(FALSE); 因为您要做的只是将控制窗口状态设置为启用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM