CComboBox的问题
一个CComboBox控件
想在特定的情况下,把下拉的那个小箭头禁止掉,不让控件选其他的内容
在另一个特定的情况下再恢复
请大家指教
问题点数:30、回复次数:23Top
1 楼laifeng415()回复于 2005-08-02 14:42:23 得分 1
直接用EnableWindows(FALSE)就可以了。前面首先选中combox控件.Top
2 楼happyparrot(快乐鹦鹉)回复于 2005-08-02 14:43:06 得分 1
不让控件选其他的内容
在另一个特定的情况下再恢复
--这还不好办么,直接调用该控件的EnableWindow函数就可以了阿Top
3 楼lixiaosan(小三)回复于 2005-08-02 14:44:18 得分 1
不用的时候把控件disable掉,用的时候enable
GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);Top
4 楼illocal(风声边界)回复于 2005-08-02 14:45:04 得分 0
EnableWindow不好,EnableWindow后控件里的字就是灰的了
我希望禁止以后,控件里的字是只读(但是底色是灰的)Top
5 楼hjon(爬爬虫)回复于 2005-08-02 14:45:14 得分 0
如果不让选的话要以禁用CComboBox
this->GetDlgItem(IDComboBox)->EnableWindow(FALSE);
条件满足时再让其可用,this->GetDlgItem(IDComboBox)->EnableWindow();
Top
6 楼nkwesley(江南丝竹)回复于 2005-08-02 14:50:49 得分 3
自画一个Top
7 楼exploeryang(手心手背都没肉)回复于 2005-08-02 14:51:58 得分 1
以上几位大虾言之有理,只需设置不同的参数即可!Top
8 楼Black_Man(Debug)回复于 2005-08-02 16:20:17 得分 5
自画倒没有必要,只需要在选择的事件处理中加入条件判断就可以了啊
也就是说,在一定条件下,即使你选择别的item,我也强制你选择特定的item(
使用SetCurSel(n)函数吧
)
这个够绝吧?
呵呵!◎#!◎
Top
9 楼lixiaosan(小三)回复于 2005-08-02 16:40:49 得分 3
要不你就把列表中其他选项删掉,只留一项
需要的时候再添加回来Top
10 楼illocal(风声边界)回复于 2005-08-03 16:07:24 得分 0
这个方法不是很好Top
11 楼illocal(风声边界)回复于 2005-08-20 10:44:42 得分 0
upTop
12 楼zdtools(土豆在线)回复于 2005-08-21 00:10:03 得分 1
清掉列表里的字串
用的时候在ADDTop
13 楼illocal(风声边界)回复于 2005-08-22 09:26:49 得分 0
还有别的办法吗?Top
14 楼illocal(风声边界)回复于 2005-08-23 14:36:24 得分 0
upTop
15 楼swimmingfish2004(something)回复于 2005-09-03 15:48:22 得分 3
在上面叠两个CCOmboX,一个里面有正常的数据,另外一个只有一个数据,当不要下拉时隐藏正常的那个,显示只有一个的那个CComboBox。Top
16 楼illocal(风声边界)回复于 2005-09-13 10:04:32 得分 0
楼上的办法还行,就是有点麻烦,是吧Top
17 楼illocal(风声边界)回复于 2005-09-26 09:28:30 得分 0
upTop
18 楼youngdreamer2008(羊追馍)回复于 2005-09-26 09:48:56 得分 3
可以在此条件下:
先把当前的select保存,再在SelChange()中将select item 设为保存的那个,这样就改不了了
在另外的条件下:
取消上面的操作,使之正常就好了!
*******只是一个思路*********Top
19 楼bird1982(看星星的鸟)回复于 2005-09-26 10:36:15 得分 3
设计的信号量,你允许改的时候信号量为0,不允许改的时候信号量设置为1,得0的时候选什么是什么,得1的时候全弹不允许更改内容的MessageBox,发生ITEM选择事件时,先判断信号量,分别进两个操作不就完了么?
何必那么麻烦。Top
20 楼heheukyo0()回复于 2005-09-26 10:49:37 得分 3
上面的不是体贴的设计哦,MessageBox总在提醒用户出错了,不友好,不便多用。
可以在同一位置放一个隐藏的只读的TextBox,条件满足时隐藏ComboBox,显示TextBox。
其他时候再隐藏TextBox,显示Combobox就行了,跟上面说的用两个ComboBox的思路一样,但ComboBox毕竟有个下拉按钮,下拉按钮放在那里却不让人选,感觉总是不好。
用TextBox的话,就明白的告诉用户,此处只有唯一选择。Top
21 楼tianblank520(哈哈)回复于 2005-09-26 11:18:44 得分 0
呵呵,太简单了
GetDlgItem(IDC_BUTTON1)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);Top
22 楼coldcrane(清风明月)回复于 2005-09-26 14:53:43 得分 2
从你的需求来看,最简单的办法就是自己实现CtlColor,
在CComboBox被禁止后,你指定它的颜色就OK了Top
23 楼illocal(风声边界)回复于 2005-10-19 12:34:23 得分 0
大家提点意见呢Top




