C # ListView Hook Pre Событие SizeChanged - PullRequest
       26

C # ListView Hook Pre Событие SizeChanged

1 голос
/ 16 декабря 2010

У меня есть ListView в режиме плитки.Я создал собственный метод для запуска при возникновении события SizeChanged.Есть ли способ переопределить это, чтобы метод срабатывал до того, как произошло событие SizeChanged?

Я пытался найти событие SizeChanging, но его нет.Как я могу это сделать?

1 Ответ

3 голосов
/ 16 декабря 2010

Чтобы добавить некоторую логику до запуска события SizeChanged, необходимо создать подкласс существующего элемента управления ListView. Создать новый класс в своем проекте и вставить в него этот код:

public class CustomListView : ListView
{

    protected override void OnSizeChanged(System.EventArgs e)
    {
        //Fire my custom method before the ListView's size is changed
        MyCustomMethod();

        base.OnSizeChanged(e);
    }

    private void MyCustomMethod()
    {
        //Insert your custom logic here
        //...
    }    

}

Затем создайте свой проект и используйте этот элемент управления CustomListView (или как вы его называете) вместо стандартного ListView.


В качестве альтернативы,если вы хотите отделить пользовательскую логику от самого элемента управления, вы можете сделать так, чтобы ваш пользовательский просмотр списка вызывал событие.Затем вы можете обработать это новое событие (мы будем называть его SizeChanging для согласованности) везде, где вам нужно в вашем коде.Например, изменив приведенный выше пример:

public class CustomListView : ListView
{

    public event EventHandler SizeChanging;

    protected override void OnSizeChanged(System.EventArgs e)
    {
        //Raise the SizeChanging event before the ListView's size is changed
        if (SizeChanging != null) {
            SizeChanging(this, e);
        }

        base.OnSizeChanged(e);
    }

}
...