美文网首页
【WPF】ListBox选中项取消不了

【WPF】ListBox选中项取消不了

作者: UnicornChen | 来源:发表于2019-05-17 15:31 被阅读0次

    简介

    用过MFC CListBox的都知道,列表框项一旦被选中,下一次想点击其空白处来取消该项的选择基本很难做到,因为CListBox会默认为把上一次选中的项作为当前的选项。 

    那么如何通过鼠标单击空白处来取消选择项呢?BCGControlBar给了我们最好的答案。

    实现方法

    1、首先需要重写继承自CBCGPListBox类,我们命名为CTextListBox

    class CTextListBox : public CBCGPListBox

    {...}

    2、由于CBCGPListBox中的HitTest(…)函数是个保护成员函数,所以我们要在CTextListBox类中添加一个公有成员函数并对HitTest(…)值进行返回,-1表示没选中。

    int CTextListBox::HitItemTest(CPoint point)

    {

        return HitTest(point);

    }

    3、之后在对CTexListBox控件(对应的变量名命名为m_SubPro)所在的对话框进行SelectChange消息重写,来实现鼠标单击到某项被选中,单击到空白处被取消。

    void CRobotSimSetupDlg::OnLbnSelchangeListSubpro()

    {

        CPoint point;

        GetCursorPos(&point);

        m_SubPro.ScreenToClient(&point);

        int iHit = m_SubPro.HitItemTest(point);

        m_SubPro.SetCurSel(iHit);

    }

    4、这样就实现了我们所要的功能。

    相关文章

      网友评论

          本文标题:【WPF】ListBox选中项取消不了

          本文链接:https://www.haomeiwen.com/subject/ezxoaqtx.html