C# MultiSelect列表框选择和取消选择事件

C# MultiSelect列表框选择和取消选择事件,c#,winforms,events,listbox,C#,Winforms,Events,Listbox,我在winforms应用程序中有一个ListBox,现在业务逻辑要求我在选择列表框中的某个项目时启动一个函数,在取消选择列表框中的某个项目时启动另一个函数 但在我看来,VS中列出的所有事件都没有赋予执行力。我确实看到过这样的事件 SelectedIndexChanged(object sender, EventArgs e) 及 但是,如果列表框的选择发生更改,则会触发这两个事件。但它没有指定引发事件的项目是被选中还是被取消选中 任何关于这方面的建议都会非常有用 我甚至在MSDN上找到了以下链

我在winforms应用程序中有一个ListBox,现在业务逻辑要求我在选择列表框中的某个项目时启动一个函数,在取消选择列表框中的某个项目时启动另一个函数

但在我看来,VS中列出的所有事件都没有赋予执行力。我确实看到过这样的事件

SelectedIndexChanged(object sender, EventArgs e)

但是,如果列表框的选择发生更改,则会触发这两个事件。但它没有指定引发事件的项目是被选中还是被取消选中

任何关于这方面的建议都会非常有用

我甚至在MSDN上找到了以下链接


但我不知道如何在这种情况下应用相同的方法。

发布了这个乏味的解决方案。可能有助于将来复制粘贴

public static int ListCount;

        private void listBoxPackService_SelectedIndexChanged(object sender, EventArgs e)
        {
            int CurrCount;

            ListBox.SelectedObjectCollection col = listBoxPackService.SelectedItems;
            CurrCount = col.Count;

            if (CurrCount > ListCount)
            {
                //Item Selected

            }
            else
            {
                //Item DeSelected

               if(CurrCount == 0)
               {
                  //All Items Were Deselected
               }

            }

            ListCount = CurrCount;

        }
加载列表框时

ListCount = 0
根据您的要求重命名控件


我仍在寻找更好的解决方案:)

一种方法是维护所选项目的列表。每次触发一次这些事件时,根据列表检查当前项。如果它不存在,您将知道它刚刚被选中并可以将其添加到列表中,同样,如果它确实存在于列表中,您将知道它已被取消选中并可以将其删除。是的,我也想到了类似的事情,我必须在表单类中的全局变量中记录所选项目的计数,并相应地采取行动。但是对于一个简单的需求来说,这将是乏味的,不是吗?您发布的链接是针对
WPF
,不适用于
winforms
“但是对于一个简单的需求来说,这将是乏味的,不是吗?”-是的!我看不到其他方法,除非有人已经编写了一个控件来支持这个,您可以授权它。
ListCount = 0