MFC VC++里的list contrl控件常用操作

本文详细介绍了如何使用 MFC 中的 ListCtrl 控件,包括设置样式、插入和删除行/列、更新数据等操作,并提供了具体示例代码。

MFC控件使用之ListCtrl

我们开始使用MFC编程了,只是临时用用,但是从没接触过怎么办?于是把编程过程中用到的方法之类的记录下来:

首先,当然是从工具箱拖放一个listctrl控件到窗口。

然后,给它关联一个control类型的变量m_list,不会?好吧,看好了,在控件上单击右键,选择添加变量,在弹出的添加控件变量对话框中找到名称这个编辑框,输入m_list,点击完成,之后就可以开车啦!

1、设置listctrl控件的样式以及扩展样式
样式在控件属性里可以设置,对话框的OnInitDialog方法中还可以再设置扩展样式
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); // 整行选择、网格线

括号中的内容可以设置以下的选项,用 “|” 隔开即可。
LVS_EX_CHECKBOXES      //每一行的最前面带个复选框
LVS_EX_FULLROWSELECT    //整行选中
LVS_EX_GRIDLINES       //网格线
LVS_EX_HEADERDRAGDROP  //列表头可以拖动

2、插入一整行
int InsertItem(int nItem, LPCTSTR lpszItem)
nItem:插入到第几行
lpszItem:这一行第一列的文字
示例:m_list.InsertItem(0, “第一列的内容,可为空”);

3、插入一列
int InsertColumn(int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1 )
nCol:插入到第几列
lpszColumnHeading:列名称
nFormat:列对齐方式,左中右
nWidth:列宽度
nSubItem:子项的索引与列,可省略。
示例:m_list.InsertColumn(3, “WindowTitle”, LVCFMT_CENTER, 100);

4、删除操作
删除一行:BOOL DeleteItem(nItem)
nItem:行编号
示例:m_list.DeleteItem(5);

删除一列:BOOL DeleteColumn(nCol)
nCol:列编号
示例:m_list.DeleteColumn(5);

删除所有列:
示例:while (m_list.DeleteColumn (0))

删除所有内容,列标题仍在:BOOL DeleteAllItems()
示例:m_list.DeleteAllItems();

5、更新数据
BOOL SetItemText( int nItem, int nSubItem, LPTSTR lpszText );
nItem:行序号
nSubItem:列序号
lpszText:需要更新的内容
示例:m_list.SetItemText(3, 1, “需要更新的内容”);

6、得到选中行的行号

多选:
CString str;
for(int i=0; i<m_list.GetItemCount(); i )
{
if( m_list.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED )
{
str.Format(_T(“选中了第%d行”), i);
AfxMessageBox(str);

       }
  }

单选:
POSITION pos = m_list.GetFirstSelectedItemPosition();
if (pos == NULL)
TRACE0(“No items were selected!\n”);
else
{
while (pos)
{
int nItem = m_list.GetNextSelectedItem(pos);
}
}

7、移动滚动条使某一条隐藏的记录显示出来
BOOL EnsureVisible(int nItem,BOOL bPartialOK );
nItem:需要显示的记录的行号
bPartialOK:布尔值
示例:m_list.EnsureVisible(i, FALSE);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值