我在Winforms应用程序中有一个CheckedListBox,其中包含Months as Items(如1月,2月,3月等)我试图实现的功能是,当任何项目被Checked时,会弹出一条消息说它已被检查。当取消选中相同的项目时,该消息应该说它已取消选中。我已经尝试过下面的代码,但它不能按原样运行。目前,当选中或取消选中任何项目时,将显示相同的消息集。
CheckOnClick =真
private void clbMonthly_SelectedIndexChanged(object sender, EventArgs e)
{
if (clbMonthly.GetItemChecked(1) == true)
{
MessageBox.Show("Item 1 checked");
}
else
{
MessageBox.Show("Item 1 unchecked");
}
//........
}
我希望你理解我的问题。请在c#中建议正确的代码。提前致谢
答案 0 :(得分:5)
尝试针对ItemCheck事件进行编码:
当项目的已检查状态发生变化时发生。
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
string itemText = checkedListBox1.Items[e.Index].ToString();
if (e.NewValue == CheckState.Checked)
{
MessageBox.Show(itemText + " checked");
}
else
{
MessageBox.Show(itemText + " unchecked");
}
}
这比SelectedIndexChanged
更好,因为只要用户选择新项目,而不是选中/取消选中的项目,就会触发此项目。