[英]Changing the enabling to disabling content by giving condition to combo box
I have a certain selection in combo box. 我在组合框中有一定的选择。 Based on that selection some items need to be enabled/disabled. 基于该选择,需要启用/禁用某些项目。 However I am unable to do so. 但是,我无法这样做。 And also another problem is once a single option is selected I cant change it to another selection without backspace and typing that selection again. 还有另一个问题是,一旦选择了一个选项,我将无法将其更改为另一个选择而没有退格键并再次键入该选择。
m_d_lvlayers
is the variable of IDC of combo box. m_d_lvlayers
是组合框IDC的变量。 Its type is CString
. 它的类型是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);
}
}
I expect to get proper selections in combobox and corresponding enabling and disabling. 我希望在组合框中获得正确的选择以及相应的启用和禁用。
You need to call UpdateData(TRUE);
您需要调用UpdateData(TRUE);
first . 首先 。
bSaveAndValidate bSaveAndValidate
Flag that indicates whether dialog box is being initialized (FALSE) or data is being retrieved (TRUE) 指示对话框是正在初始化(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);
}
}
Although in your code it makes no sense to call UpdateData(FALSE);
尽管在您的代码中,调用UpdateData(FALSE);
没有任何意义UpdateData(FALSE);
because all you are doing is setting the control window state to enabled. 因为您要做的只是将控制窗口状态设置为启用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.