覆盖ListView Clear()方法

时间:2015-11-05 15:36:39

标签: c# winforms listview

我有一个ListView类,它使用ItemSelectionChanged事件来维护自己的所选项目列表。

这很有效,只是Clear()似乎没有触发ItemSelectionChanged事件 这意味着在调用Clear()后,列表仍然包含在Clear()被调用之前突出显示的所有项目。

我想覆盖Clear()方法,以便我可以自己清除列表,但我可以看到它没有标记为虚拟。还有其他方法可以使用现有的Clear()方法吗?

计划B是我只是编写自己的方法并在清除之后立即调用它,但这不是很好。

listView1.Clear();
listView1.ClearMyList();

2 个答案:

答案 0 :(得分:3)

实际上我不知道c#( public new void )这个功能的名称,但你可以通过创建自己的“customListView”来实现这一点。

var listView = new CustomListView();
listView.Clear();

public class CustomListView : ListView
{
    public new void Clear()
    {
        Console.WriteLine("I can clear myself...");
    }
}

enter image description here

答案 1 :(得分:0)

您无法覆盖非虚拟方法。因此,编写“新”自己的方法是最好的方法。

This is a similar question