MFC list control 控件判断当前选中行,设置行选中,取消行选中[通俗易懂]

MFC list control 控件判断当前选中行,设置行选中,取消行选中

大家好,又见面了,我是全栈君。

判断当前选中的行

下面是一个button(按钮)的触发事件,按钮按下检测list control(列表)控件是否有选中的行,把选中的删除。(m_list 是list control 的变量名)

void CListDis::OnBnClickedButton2()
{ 
   
	// TODO: 在此添加控件通知处理程序代码
	int iItem;
	BOOL flag;
	flag = false;    // 判断标志,判断是否有选中行
	for (iItem = m_list.GetItemCount() - 1; iItem >= 0; iItem--)   // 获取列表的行数,进行循环判断
	{ 
   
		//m_list.GetItemState(iItem,LVIS_SELECTED)
		if (LVIS_SELECTED == m_list.GetItemState(iItem, LVIS_SELECTED))     //选中行的判断
		{ 
   
			flag = true;
			CString cs;
			cs.Format(TEXT("删除当前选中的第%d行"), iItem+1);
			MessageBox(cs);
			m_list.DeleteItem(iItem);

			// 在这里面进行更新容器以及更新文件 
			list<user>::iterator iter = file.users.begin();
			for (int i = 0; i != iItem; iter++, i++);
			file.users.erase(iter);
			file.WriteUsers(file.users);
			MessageBox(TEXT("删除成功"));
		}
	}
	
	// 在没有选中行的情况下,给出一个提示
	if (!flag) { 
   
		MessageBox(TEXT("当前好像什么都没有选中喔"), TEXT("删除失败"));
	}
}

设置 list control 行选中

设置行选中还需要把把list control 的 Always show selection 属性修改为 True,默认情况下False。

m_list.SetFocus();      // 获取焦点在列表上面
// 设置第i行为选中的状态
m_list.SetItemState(i, LVNI_FOCUSED | LVIS_SELECTED, LVNI_FOCUSED | LVIS_SELECTED); 

取消当前选中的行

m_list.SetItemState(i, 0, -1);  // 把第i行设置为没有选中的状态
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115093.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月7日 下午9:00
下一篇 2022年2月7日 下午9:00


相关推荐

  • Postman参数化

    Postman参数化一 没有使用参数化请求 url https postman echo com postjson 请求体 user admin pwd abc1234 断言代码 pm test 用户名密码正常 登陆成功 function varjsonData pm response json pm expect jsonData data user to eql admin pm expect json

    2026年3月20日
    2
  • mysql 1062_mysql error:1062问题解决方法

    mysql 1062_mysql error:1062问题解决方法我将 id 的 int 类型改成了 bigint 就可以了 其实再改回来可能也会好了 可能是数据库备份的时候出现了错误 开发的网站后台系统在测试过程中出现了这个问题 InvalidQuery Duplicateent 127 forkey1SQLis INSERTINTO kq news Title Author Type Content IsDel A

    2026年3月26日
    2
  • ABA问题_乐观锁aba引发的实际问题

    ABA问题_乐观锁aba引发的实际问题ABA问题一.概述:二.什么是ABA问题?三.ABA问题的解决:原子引用:(存在ABA问题)带版本号的原子引用(解决ABA问题)一.概述:ABA问题是在多线程并发的情况下,发生的一种现象。上一次记录了有关CAS操作的一些知识,CAS通过比较内存中的一个数据是否是预期值,如果是就将它修改成新值,如果不是则进行自旋,重复比较的操作,直到某一刻内存值等于预期值再进行修改。而ABA问题则是在CAS操作中存在的一个经典问题,这个问题某些时候不会带来任何影响,某些时候却是影响很大的。二.什么是ABA问题?理解一

    2025年8月10日
    5
  • 将整型变量转化为字符串_字符转字符串

    将整型变量转化为字符串_字符转字符串strsep(&data,”,”); //字符串切割函数kstrtoint(first,10,&duty_cycle);//字符串转整形10:十进制sprintf(data,”%d,%d”,duty_cycle,fan_freq);//整型数转字符串示例代码:ssize_tdcfan_write(structfile*file,constchar__user…

    2022年10月18日
    7
  • 【OpenCV3】直线拟合——cv::fitLine()详解

    【OpenCV3】直线拟合——cv::fitLine()详解在图像处理中 通常会遇到根据给定的点集 比如轮廓 拟合出一条直线的情形 opencv2 和 opencv3 中提供了一个专门用于直线拟合的函数 cv fitLine

    2026年3月17日
    2
  • html圣杯布局,三种实现圣杯布局方法「建议收藏」

    html圣杯布局,三种实现圣杯布局方法「建议收藏」本文介绍三种实现圣杯布局的方法,前两种可归为一类,与第三种方法差别在于加载顺序不同。圣杯布局实现1:步骤1:给出HTML结构:圣杯布局1*{margin:0;padding:0;text-Align:center;}#top{background:#666;height:60px;}#left{background:#E79F6D;}#content{background:…

    2022年6月24日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号