一、如何添加/刪除Combo Box內容
1. 在Combo Box控件屬性的Data標簽里面添加,一行表示Combo Box下拉列表中的一行。換行用ctrl+回車。
2. 在程序初始化時動態添加
如: //控件內容初始化
CString strTemp;
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();//消除現有所有內容
for(int i=1;i<=100;i++)
{
strTemp.Format("%d",i);
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);
}
3. 下拉的時候添加
如: CString strTemp;
int iCount=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCount();//取得目前已經有的行數
if(iCount<1)//防止重復多次添加
{
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();
for(int i=1;i<=100;i++)
{
strTemp.Format("%d",i);
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);
}
}
4. 刪除
DeleteString( UINT nIndex )//刪除指定行,
5. 插入
InsertString( int nIndex, LPCTSTR lpszItem )//將行插入到指定位置
6. 查找
FindString( int nStartAfter, LPCTSTR lpszItem )//可以在當前所有行中查找指定的字符傳的位置,nStartAfter指明從那一行開始進行查找。
int SelectString( int nStartAfter, LPCTSTR lpszItem )//可以選中包含指定字符串的行
二、如何控制Combo Box的下拉長度
1. 首先要知道兩點:一、那就是在設計界面里,點擊一下Combo Box的下拉箭頭,此時出現的調整框就是Combo Box的下拉調整框。
2. 二、屬性里有個 No integral height 鉤選項,表示最大長度為設計長度,如果實際內容比設計長度多,就出現滾動條,少就以實際長度顯示。
三、選擇其中的某行
1. 選中:
int iPos=((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetCurSel();//當前選中的行。
2. 設置
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->SetCurSel(n)//設置第n行內容為顯示的內容。
四、取得Combo Box框內容
1. 取當前內容
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp);
2. 取其他行內容
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetLBText(n,strTemp);
四、獲得焦點
通常要判斷控件是否獲得了焦點,可以用GetFocus()函數
例如:if(GetFocus()==GetDlgItem(IDC_EDIT_VALUE2))//判斷焦點是否在編輯框IDC_EDIT_VALUE2內。
但是combobox 的焦點不同,因為它是由edit和listbox兩部分組成的
所以獲得焦點要用GetParent():if ((GetFocus()->GetParent())==GetDlgItem(IDC_COMBO_CF))
1、改變下拉框大小:先點向下的箭頭,就可以調整下拉框大小。
2、如果 ComboBox 的 Sorted 屬性設置為 true,則新添加項將按字母順序插入到列表中。否則,在列表的結尾處插入項。
3、要立即響應選擇框的改變(即選擇框一改變選項,就立刻將結果傳遞進去)!響應他的哪個消息比較好?如果是只能選擇的響應ON_CBN_SELCHANGE,如果是可以編輯的,那么要立刻響應編輯就是ON_CBN_EDITCHANGE
4、CBN_SELENDOK是什么作用?
This notification message is sent when the user clicks a list item,or selects an item and then closes the list. It indicates the user's selection is to be processed
5、介紹一下列表框幾種常用的消息映射宏:
ON_CBN_DBLCLK 鼠標雙擊
ON_CBN_DROPDOWN 列表框被彈出
ON_CBN_KILLFOCUS / ON_CBN_SETFOCUS 在輸入框失去/得到輸入焦點時產生
ON_CBN_SELCHANGE 列表框中選擇的行發生改變
ON_CBN_EDITUPDATE 輸入框中內容被更新
使用以上幾種消息映射的方法為定義原型如:afx_msg void memberFxn( );的函數,并且定義形式如ON_Notification( id, memberFxn )的消息映射。如果在對話框中使用組合框,Class Wizard會自動列出相關的消息,并能自動產生消息映射代碼。
6、改變ComboBox的下拉列表框寬度一般情況下,列表框的寬度和選擇框是一樣寬的,為了讓列表框變的更寬,可以用m_Combobox.setdroppedwidth(int width); 來調整他的寬度。
7、如何使控鍵ComboBox不能輸入只能在下拉菜單中選擇?
VC6中style屬性設為csDropDownList
VC2005中Type屬性設為Drop List
8、設置當前項或得到當前是第幾項
m_ComboBox1.SetCurSel(N); //SetCurSel函數可改變標簽控件當前選定的項目
//這個N可以是-1,表示無選擇,0表示第一項,1表示第二項。。
m_ComboBox1.GetCurSel(); //得到當前是第幾項.0是第一項,1是第二項