CListCtrl选中某行

原文链接: http://blog.csdn.net/wxq1987525/article/details/7461461

1、设置CListCtrl选中行

m_list.SetItemState(
nIndex,
LVIS_FOCUSED | LVIS_SELECTED,
LVIS_FOCUSED | LVIS_SELECTED);

注意:这句代码只是让指定行高亮显示,如果使用后再用GetSelectionMark函数来得到选中行,结果往往是错误的。比如,先用鼠标点击选中第5行,调用GetSelectionMark函数得到的是4(第5行),再调用SetItemState函数选中第2行,然后调用GetSelectionMark函数得到的还是4(第5行),所以,需要在设置选中行高亮显示时,一般与SetSelectionMark函数连用:

m_list.SetItemState(
nIndex,
LVIS_FOCUSED | LVIS_SELECTED,
LVIS_FOCUSED | LVIS_SELECTED); //选中行

m_list.SetSelectionMark(nIndexs);

2、取消CListCtrl选中行

m_list.SetItemState(nIndex, 0, LVIS_SELECTED);

m_list.SetSelectionMark(-1);

3、CListCtrl选中行改变

项目中用到ClistCtrl,当选中行改变时,另外一个控件的详细信息也随之改变,最开始使用鼠标点击事件:

void CMyDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
{
TODO: Add your control notification handler code here
int nIndex = m_list.GetSelectionMark();
if (nIndex >=0)

{

//要进行的操作

}

}

后来发现,用鼠标点击并不完善,因为如果用键盘来切换选中行的话,另一控件的信息就改变不了,于是改用响应LVN_ITEMCHANGED消息,发现改变选中行时会有好几个LVN_ITEMCHANGED消息,加入判断即可:

void CMyDlg::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if(pNMListView->uChanged == LVIF_STATE)
{
if(pNMListView->uNewState)
{
int nIndex = pNMListView->iItem;

//要进行的操作

}

}

*pResult = 0;
}

时间: 2024-10-28 11:33:10

CListCtrl选中某行的相关文章

VBA选中多行多列及多单元格

选中多个单元格 Range("<单元格地址>:<单元格地址>[,<单元格地址>--]").Select 例:Range("A1:B2").Select   '选中"A1"."A2"."B1"."B2"四个连续的单元格 Range("12:12").Select   '选中第12行 Range("B:B").Sel

delphi CXGRID用法 (取行、列值;定位选中某行等等)

CXGRID用法 (取行.列值:定位选中某行等等) Delphi Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值 cxGrid1DBTableView1.Controller.FocusedRowIndex 当前行号 cxGrid1DBTableView1.Controller.FocusedRow 当前行 cxGrid1DBTableView1.Controller.FocusedColumn 当前列 cxGrid1DBTableView1.Controller.Focused

dev gridcontrol选中多行数据

dev的gridcontrol控件作表格时是可以实现按Ctrl键选中多行数据的,首先改变gridcontrol的一个属性:gridview1->OptionsSelection->MultiSelect改为true,即允许选中多行.然后在需要使用的事件方法中加入以下代码:int[] rows = gridview1.GetSelectedRows();即可获取选中行的行号

CXGRID用法(取行、列值;定位选中某行等等)

Delphi Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值 cxGrid1DBTableView1.Controller.FocusedRowIndex 当前行号 cxGrid1DBTableView1.Controller.FocusedRow 当前行cxGrid1DBTableView1.Controller.FocusedColumn 当前列cxGrid1DBTableView1.Controller.FocusedColumnIndex 当前列号cxGrid1DBTab

FineUI 选中多行获取行ID

http://www.fineui.com/bbs/forum.php?mod=viewthread&tid=2506&page=1 /// <summary>        /// 选中的行        /// </summary>        /// <param name="grid"></param>        /// <returns></returns>        prote

jQuery easyUI的datagrid,如何在翻页以后仍能记录被选中的行

1.先给出问题解决后的代码 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%> 3 <% 4 String path = request.getContextP

设置cell选中颜色以及表格默认选中某行

1.在加载cell的地方(即 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath里面)加上下面几句代码 [cell setBackgroundColor:CLEARCOLOR]; cell.selectedBackgroundView = [[UIView alloc] initWithFrame:cell.frame]; cell.selecte

Silverlight获取DataGrid选中的行数据

注意触发的事件为:CurrentCellChanged后台代码: /// <summary> /// 获取datagrid当前选中的单元格数据 /// 如果绑定的数据源为实体的话默认选中的当前记录为一条实体 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgca

GridView中根据CheckBox选中的行取出某列的值

根据CheckBox选中的行取出某列的值: for (int i = 0; i < this.GridView1.Rows.Count; i++) { CheckBox ckb = (CheckBox)this.GridView1.Rows[i].Cells[0].FindControl("CheckBox1"); if (ckb.Checked) { huohao =Convert.ToInt32(this.GridView1.Rows[i].Cells[2].Text); s