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






3.94/5 (19投票s)
2005年11月29日
2分钟阅读

77865

4973
本文介绍了一个简单的可重用列表控件。
引言
我谨向 CodeProject 上发布的一些旧文章的作者表示感谢!我只是将他们的信息整合起来,创建了一个可重用的类,CListCtrlEx
。希望您喜欢使用它。
特点
- 可编辑单元格 – 我们可以使列表控件中的任何单元格可编辑。
- 组合框 – 我们可以将组合框放置在列表控件的任何单元格中。
- 着色 – 我们可以为列表控件的单个行赋予不同的文本颜色以及背景颜色。
- 工具提示 – 此类添加了工具提示支持。目前它仅显示单元格中的当前文本。
Using the Code
将列表控件插入到您的对话框中。将视图样式更改为报告。创建一个类型为CListCtrlEx
的成员变量,例如m_ListCtrlMyList
。
此外,您的项目应配置为支持 Unicode 字符集。
如何使单元格可编辑?
此类包含一个公共成员函数SetEditBox
。
void SetEditBox(int nItemIndex_i, int nSubItemIndex_i);
它接受项目(行)号和子项目(列)号作为参数。
示例
- 如果您想使第三行第四列可编辑,请调用
m_ListCtrlMyList.SetEditBox(2, 3); // index starts with 0
- 如果您想使整行可编辑,请调用
m_ListCtrlMyList.SetEditBox(2, -1);
它指示使第三行的所有单元格可编辑。
- 如果您想使整列可编辑,请调用
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));
注意
如果您想看到正确的结果,则应在将必要的列和项目插入到列表控件之后使用上述所有方法。