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

一个简单的可重用列表控件

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.94/5 (19投票s)

2005年11月29日

2分钟阅读

viewsIcon

77865

downloadIcon

4973

本文介绍了一个简单的可重用列表控件。

引言

我谨向 CodeProject 上发布的一些旧文章的作者表示感谢!我只是将他们的信息整合起来,创建了一个可重用的类,CListCtrlEx。希望您喜欢使用它。

特点

  1. 可编辑单元格 – 我们可以使列表控件中的任何单元格可编辑。
  2. 组合框 – 我们可以将组合框放置在列表控件的任何单元格中。
  3. 着色 – 我们可以为列表控件的单个行赋予不同的文本颜色以及背景颜色。
  4. 工具提示 – 此类添加了工具提示支持。目前它仅显示单元格中的当前文本。

Using the Code

将列表控件插入到您的对话框中。将视图样式更改为报告。创建一个类型为CListCtrlEx的成员变量,例如m_ListCtrlMyList

此外,您的项目应配置为支持 Unicode 字符集。

如何使单元格可编辑?

此类包含一个公共成员函数SetEditBox

void SetEditBox(int nItemIndex_i, int nSubItemIndex_i);

它接受项目(行)号和子项目(列)号作为参数。

示例

  1. 如果您想使第三行第四列可编辑,请调用
    m_ListCtrlMyList.SetEditBox(2, 3); // index starts with 0
  2. 如果您想使整行可编辑,请调用
    m_ListCtrlMyList.SetEditBox(2, -1);

    它指示使第三行的所有单元格可编辑。

  3. 如果您想使整列可编辑,请调用
    m_ListCtrlMyList.SetEditBox(-1, 3);

    它指示使第四列的所有单元格可编辑。

如何在单元格中放置组合框?

此类包含一个公共成员函数SetComboBox

void SetComboBox(int nRow_i, int nCol_i, CStringArray& csarValues_i);

它接受项目(行)号和子项目(列)号以及一个CStringArray作为参数。应在调用此函数之前,将要在组合框中显示的字符串填充到CStringArray中。

示例

CStringArray acsComboStrings;   
acsComboStrings.Add(L"String1");
acsComboStrings.Add(L"String2");
acsComboStrings.Add(L"String3");
acsComboStrings.Add(L"String4");
m_ListCtrlMyList.SetComboBox(1,2, acsComboStrings);

与编辑框类似,也支持以下组合。

m_ListCtrlMyList.SetComboBox(-1,-1, acsComboStrings);

m_ListCtrlMyList.SetComboBox(1,-2, acsComboStrings);

注意

组合框不可编辑。如果您想编辑它,请右键单击设置了组合框的单元格。将显示一个编辑框。

如何更改项目文本颜色和背景?

文本着色是在OnCustomDraw函数中完成的。为了为一行分配特定的颜色,请调用函数AddColoredRow

void AddColoredRow(int nItemIndex,
                   COLORREF colTextColor = RGB(0, 0, 0),                   
                   COLORREF colBkColor =   RGB(255, 255, 255));

它接受项目(行)号和两个COLORREF对象,分别用于文本颜色和背景颜色。

示例

m_ListCtrlMyList.AddColoredRow(3,
                               RGB(23,34,455),
                               RGB(56,23,45));

注意

如果您想看到正确的结果,则应在将必要的列和项目插入到列表控件之后使用上述所有方法。

© . All rights reserved.