关于listview中的checkbox难题

cdo 2005-08-30 06:33:37
我在listview中加入了几个checkbox项:
All
Users
Groups
Computers

我要实现当勾选了"All"时,其它的项也全勾选,而只要"users/groups/computers"中任何一项没有勾选时,"All"项也不勾选.

我在listview的ItemCheck事件中加了类似下面的代码,并实现了功能:
if (e.NewValue == CheckState.Checked)
{
//...如果勾选了"ALL"
foreach (ListViewItem taskItem in m_tasksList.Items)
{
if ((((Task)taskItem.Tag).TaskObject != Task.TaskObjectEnum.All) && (taskItem.Checked == false))
{
taskItem.Checked = true; //******
}
}
}
}

现在大问题来了: 当我选了"All"时,程序运行到:taskItem.Checked = true;这个时候又会再次触发ListView的ItemCheck事件,而我的事件内有循环.这样,导致有时候程序崩溃.

请问有什么好的办法来实现这样的功能呀?感谢!
...全文
241 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zeusvenus 2005-08-30
  • 打赏
  • 举报
回复
一楼方法应该可以。
cdo 2005-08-30
  • 打赏
  • 举报
回复
楼上的方法不错。
JasonHeung 2005-08-30
  • 打赏
  • 举报
回复
if (e.NewValue == CheckState.Checked)
{
//...如果勾选了"ALL"

m_tasksList.ItemCheck -= new EventHandler(m_tasksList_ItemCheck);//Add
foreach (ListViewItem taskItem in m_tasksList.Items)
{
if ((((Task)taskItem.Tag).TaskObject != Task.TaskObjectEnum.All) && (taskItem.Checked == false))
{
taskItem.Checked = true; //******
}
}
m_tasksList.ItemCheck += new EventHandler(m_tasksList_ItemCheck);//Add

}
}
内容概要:SSD2828QN4是一款MIPI主桥接芯片,用于连接应用处理器与传统并行LCD接口及支持MIPI从属接口的LCD驱动器。该芯片支持最高每通道1Gbps的串行链路速度,最多可配置4个数据通道,显著减少了信号数量。它支持多种接口模式,包括RGB+SPI组合接口,适用于驱动智能或非智能显示面板,并能通过命令模式和视频模式传输数据。芯片内置时钟和复位模块、外部接口、协议控制单元(PCU)、包处理单元(PPU)、错误校正码/循环冗余校验(ECC/CRC)模块、长包和命令缓冲区、D-PHY控制器、模拟收发器以及内部锁相环(PLL),确保了高效的数据传输和系统稳定性。此外,文档详细描述了芯片的引脚分配、寄存器设置、操作模式、电源序列、时序特性等关键参数,为开发者提供了全面的技术指导。 适合人群:具备一定硬件设计基础,从事嵌入式系统开发、显示技术研究的研发人员。 使用场景及目标:①实现应用处理器与MIPI兼容显示屏之间的高速数据传输;②优化显示系统的功耗表现,减少电磁干扰(EMI);③通过灵活配置不同接口模式来适应各种显示设备的需求。 阅读建议:此文档面向具有一定电子工程背景的专业人士,建议读者结合实际项目需求深入理解各章节内容,特别是关于寄存器配置、时序要求等方面的具体说明。对于初次接触此类技术的开发者而言,建议先熟悉基本概念再逐步掌握高级功能的应用方法。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧