【问题标题】:CheckedListBox Check/Uncheck detectionCheckedListBox 选中/取消选中检测
【发布时间】:2016-05-11 14:52:19
【问题描述】:

我在 Winforms 应用程序中有一个 CheckedListBox,其中包含月份作为项目(如 1 月、2 月、3 月等)。我试图实现这样的功能,即当任何项目被选中时,应该弹出一条消息说它已被选中。当同一项目未选中时,消息应说明它已取消选中。我已经尝试了下面的代码,但它没有按预期工作。目前,当任何项目被选中或取消选中时,都会显示同一组消息。

CheckOnClick=true

    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# 中提出正确的代码。提前致谢

【问题讨论】:

  • 您是否在clbMonthly 中选中和取消选中索引为 1(大概是 2 月)的项目?
  • 是的,您猜对了。目前,无论选中/取消选中哪个项目,它都会显示相同的消息:(

标签: c# winforms checkedlistbox


【解决方案1】:

尝试针对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 更好,因为每当用户选择一个新项目时都会触发这个,而不是一个项目被选中/取消选中。

【讨论】:

  • 谢谢@Hanlet。您提供了我一直在寻找的正确解决方案。再次非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2015-06-18
相关资源
最近更新 更多