void CDialog1::OnSelChange()
{
     m_ComboBox1.SetWindowText("123456");
}为什么ComboBox1的编辑框中不显示"123456",也不显示所选择的条目,而是显示空白呢?

解决方案 »

  1.   

    你是想修改了控件,然后给他赋值?combox好像是用addstring()或者insertstring()方法来实现你想要的结果…
      

  2.   

    要想显示所要的条目, 请用SetCurSel();
      

  3.   

    简单试了一下,感觉m_ComboBox1.SetWindowText("123456"); 在SelChange消息之前执行了。
      

  4.   


        //你可以自己调试下,并没有进入到这个函数里面来,所以不存在会显示
        //这个消息函数是当你改变当前选项的时候才会触发,而你没有初始化里面的数据
        //也就没有存在触发的情况,自然就不会进到这个函数,进不到肯定不会实行下面这句话了
    void CDialog1::OnSelChange() 

        m_ComboBox1.SetWindowText("123456"); 
    }
    你想要这句话实现的话不能添加ComboBox的CBN_SELCHANG消息,而是添加CBN_KILLFOCUS
    或者是CBN_DROPDOWN这两消息都可以实现你那句话。 又或者你在OnInitDialog()中先用AddString添加上几个内容,再用CBN_SELCHANGE才会实现你的这句话
      

  5.   

    要使用SETWINDOWTEXT必须设置DROPDOWN风格
      

  6.   

    下移风格添加CBN_KILLFOCUS或者是CBN_DROPDOWN这两消息都可以实现。上面有句话说错了,如果是在OnInitDialog()中用AddString添加上几个内容,比如说添加1,2,3再用CBN_SELCHANGE实现你的这句话的话还是不能实现你这句话哦,因为你改变选项后(比如说改变成"2")先用到你的
    m_ComboBox1.SetWindowTex("123456"); 然后就会再把"2"设置到ComboBox中。这样就会造成你要显示的123456并没有显示出来。只会显示"2".
      

  7.   

    To 8楼:你试过会显示“2”?其实编辑框中没有内容显示。我的目的是:选中下拉列表中某条(如:"china")后,ComboBox1的编辑框中不显示这条的内容("china"),而是显示我设置的内容(如:"中国")。
      

  8.   

    那我建议lz简单的用的话, 就直接edit+listbox. 如果非要combox, 那就在onselectchange里 得到那个edit的句柄, 然后setwindowtext, 而不是直接给combo赋值.得到edit的句柄, 可以看看msdn里的ccombobox类的成员函数. 
      

  9.   


    以上所说都是由代码测试出来的。 所以一定会显示2 
    BOOL CMy11Dlg::OnInitDialog()
    {
    CDialog::OnInitDialog(); m_cba.AddString("China");
    m_cba.AddString("English");
    m_cba.SetCurSel(0);

    return TRUE;  // return TRUE  unless you set the focus to a control
    }void CMy11Dlg::OnKillfocusCombo1() 
    {
      // TODO: Add your control notification handler code here
    /* CString str;
    m_cba.GetLBText(m_cba.GetCurSel(),str);
    if("china" == str)
    m_cba.SetWindowText("中国");*/            //失去焦点后显示的是中国
    }void CMy11Dlg::OnSelchangeCombo1() 
    {
    // TODO: Add your control notification handler code here
    /* CString str;
    m_cba.GetLBText(m_cba.GetCurSel(),str);
    if("china" == str)
    m_cba.SetWindowText("中国");*/          //选中后显示的还是china而不是中国
    }void CMy11Dlg::OnDropdownCombo1() 
    {
    // TODO: Add your control notification handler code here
    /* CString str;
    m_cba.GetLBText(m_cba.GetCurSel(),str);
    if("china" == str)
    m_cba.SetWindowText("中国");*/      //这个一点下拉框就直接显示出中国
    }
      

  10.   

    void CDialog1::OnSelChange() 

        m_ComboBoxEx1.GetEditCtrl()->SetWindowText("中国");//ComboBoxEx可以
         //但AddString();InsertString();FindString();都不能用了。没办法呀,只能改了。

    //InsertItem();用法:
    COMBOBOXEXITEM Item;
    Item.mask = CBEIF_TEXT;
    Item.iItem = 0;
    Item.pszText = szPath;
    m_cboExNameC.InsertItem(&Item);
      

  11.   

    ComboBox是 Edit 和 List的组合控件 
      

  12.   

    ComboBoxEx的文本长度有限,怎么办?