当前位置: 首页 > 编程语言 > C#

WindowsC#CheckedListBoxCheckedItemEventHandling分享

时间:2023-04-10 22:05:52 C#

WindowsC#CheckedListBoxCheckedItemEventHandled我目前正在开发一个Window应用程序,它使用CheckedListBoxes来实现程序的某些方面。我遇到的一个问题是,我一直在尝试查找选中某项时触发的事件,以便我可以在选中任何列表项时启用表单按钮。问题是我尝试使用以下内容;privatevoidclbAvailMods_ItemCheck(objectsender,ItemCheckEventArgse){if(e.NewValue==CheckState.Checked){btnInstall.Enabled=true;但是当我在if语句上设置断点时,它永远不会在检查列表框中的项目时触发。我在这里做错了什么吗?标准的Windows窗体技巧是延迟运行代码,直到所有事件副作用完成。您使用Control.BeginInvoke()方法延迟运行代码。这将解决您的问题:privatevoidcheckedListBox1_SelectedIndexChanged(objectsender,EventArgse){this.BeginInvoke(newMethodInvoker(evalList),null);}privatevoidevalList(){boolany=false;for(intix=0;ix您可以使用NewValue属性手动更新CheckedItems.Count。这是我仅在选中至少一项时才用于启用按钮的代码:=CheckState.Checked?1:-1))>0);一些潜在的陷阱。假设您已经通过VS.NetGUI添加了事件,以确保它已连接到控件中。尝试单击该项目两次-一次为项目提供焦点,然后再次切换选中状态-如果您希望项目在第一次单击时切换其选中状态,请将“CheckOnClick”属性设置为true。我认为这是SelectedIndexChanged事件,但我现在要确认。编辑:SelectedIndexChanged事件确实有效。但无论复选框是否被选中,它都会触发。所以如果你想这样做,我会检查支票状态。但是,当我确实使用ItemCheck事件时,它会在我实际选中复选框而不仅仅是文本时触发。我知道很久以前就回答了这个问题,但我发现只处理MouseUp和KeyUp事件更容易。当这些事件触发时,CheckedItems.Count属性是准确的。由于它们都做同样的事情,我创建了一个方法来处理工作并从两个事件处理程序调用该方法。以上就是C#学习教程:WindowsC#CheckedListBox勾选项目事件处理分享。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注---privatevoidclbFolders_KeyUp(objectsender,KeyEventArgse){Update();}privatevoidclbFolders_MouseUp(objectsender,MouseEventArgse){Update();}privatevoidUpdate(){btnDelete.Enabled=clbFolders.CheckedItems.Count>0;如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: