65.9K
CodeProject 正在变化。 阅读更多。
Home

多选列表框

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.25/5 (4投票s)

1999年12月13日

viewsIcon

158828

downloadIcon

3541

扩展 CCheckListBox 类以拥有多个复选框列。

Sample Image - multichecklistbox.jpg

在一个最近的项目中,我需要一个CCheckListbox类,允许在字符串前面有多个复选框。CCheckListbox设置的三态样式并不能满足我的需求。我有一个人员列表,他们可以同时属于两个不同的类别。三态样式只能告诉我此人属于哪个类别,但我需要知道具体是哪个。

因此,我决定编写一个类来扩展CCheckListbox的功能。我最终创建了CMultiCheckListBox类。它的作用是在原始CCheckListbox实现中的复选框前面添加另一个复选框

要使用该类,请按照以下步骤操作

  • 将一个成员变量添加到所需的类(CDialogCFormView等)
    CMultiCheckListBox m_List;
    
  • 对刚刚创建的列表框变量进行子类化。
    void CCharityReportDlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);
        //{{AFX_DATA_MAP(CCharityReportDlg)
        DDX_Control(pDX, IDC_LIST1, m_List);
        //}}AFX_DATA_MAP
    }
  • 要设置列表框项目nIndex的第一个复选框,请调用SetCheck(nIndex, nCheck)
    m_List.SetCheck(nIndex,1);
  • 要设置第二个复选框,请调用SetMultiCheck(nIndex, nCheck)
    m_List.SetMultiCheck(nIndex,1);
  • 要检索第一个复选框复选框状态,请调用GetCheck(nIndex)
    m_List.GetCheck(nIndex);
  • 要检索第二个复选框复选框状态,请调用GetMultiCheck(nIndex)
    m_List.MultiGetCheck(nIndex);

历史

  • 1999年12月13日:初始版本

许可证

本文没有明确的许可证附加,但可能包含文章文本或下载文件本身中的使用条款。如有疑问,请通过下面的讨论区联系作者。作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.