MyException - 我的异常网
当前位置:我的异常网» VC/MFC » MFC控件(五):List Control

MFC控件(五):List Control

www.myexceptions.net  网友分享于:2013-04-10  浏览:98次
MFC控件(5):List Control

要查看List Control控件的显示效果,最好的方式就是随便打开电脑中一个文件夹,然后你可以选择不同的方式显示目录下面的文件.常用的有Large Icons , Small Icons,List, Details.

这四种方式分别对应List Control属性窗口中View的4种选项:Icon, Small Icon,List , Report.前3种的显示样式就眼前面讲的控件List Box类似.只有Report的样子有点像个表格.

 

下面以Repot类型的List Control为例

先把控件与如下变量绑定起来

CListCtrl m_listShow;

 

初始化列表并插入数据

 

//添加列标题

m_listShow.InsertColumn(0,"ID",LVCFMT_LEFT, 80); //第一列,宽度为80

m_listShow.InsertColumn(1,"Name"); //第二列,这里没有指定列标题的宽度

m_listShow.InsertColumn(2,"Age"); //第三列

 

//指定列宽度

CRect rect;

m_listShow.GetClientRect(rect);

m_listShow.SetColumnWidth(1, rect.Width()/2); //指定第二列宽度为整个控件区域的一半大小

 

//指定第三列宽度

m_listShow.SetColumnWidth(2,LVSCW_AUTOSIZE_USEHEADER); //根据列内容自动调整宽度

 

//指定列表样式

m_listShow.SetExtendedStyle( m_listShow.GetExtendedStyle() |

                                            LVS_EX_CHECKBOXES | // 在第一行第一列显示check box

                                            LVS_EX_GRIDLINES | //列表有风格线,看起来才像表格嘛

                                            LVS_EX_FULLROWSELECT); //选择一行时整行高亮显示,不设置默认只是该行第一列高亮显示.

 

 

//插入数据

//插入第一行内容

m_listShow.InsertItem(0, "NO.1"); //第一列可用InsertItem直接插入,0是行数

m_listShow.SetItemText(0,1,"arwen");  //如果不是第一列只能用SetItemText插入内容,其中0是行数,1是列数

m_listShow.SetItemText(0,2,"24");

 

//插入第二行内容

m_listShow.InsertItem(1, "NO.2");

m_listShow.SetItemText(1,1,"weiwen");

m_listShow.SetItemText(1,2,"25");

 

删除数据

m_listShow.DeleteItem(1); //删除指定行的数据,这里是删除第一行

m_listShow.DeleteColumn(0); //删除指定列,这里是删第一列

m_listShow.DeleteAllItems(); //删除所有数据

 

选择数据

int selIndex;

for(int i = 0 ; i < m_listShow.GetItemCount(); i++){

if(m_listShow.GetItemState(i,LVIS_SELECTED) == LVIS_SELECTED){

selIndex = i; //该行被选中

}

}

 

如果你设置了样式为LVS_EX_CHECKBOXES,则每一行有个check box.此时可以这样判断每行是否选上

int selIndex;

for(int i = 0 ; i < m_listShow.GetItemCount(); i++){

if(m_listShow.GetCheck(i) ){

selIndex = i; //该行被选中

}

}

 

获得选择行的值

CString strInfo = m_listShow.GetItemText(1,1); //返回第一行第一列的值GetItemText(nRow, nColumn) ,注意行和列是从0开始计数的

 

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有