簡體   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