visual una referencia realizo que orden los generar formularios formulario existe eventos error diseñador crear componente codigo cambios winforms events listview

winforms - una - ¿Hay algún evento que se active si cambia el número de ListViewItems en un ListView?(Formularios de Windows)



eventos del mouse en c# (3)

@Domenic

No estoy seguro, nunca llegué tan lejos en el proceso de pensamiento.

Otra solución podría ser ampliar ListView, y al agregar y eliminar cosas, en lugar de llamar .items.add y items.remove, usted llama a sus otras funciones. Todavía sería posible agregar y eliminar sin que se generen eventos, pero con una pequeña revisión del código para asegurarse de que .items.add y .items.remove no se hayan invocado directamente, podría funcionar bastante bien. Aquí hay un pequeño ejemplo. Solo mostré 1 función Agregar, pero hay 6 que debe implementar si desea utilizar todas las funciones de adición disponibles. También hay .AddRange, y. Apúntate que tal vez quieras echarle un vistazo.

Public Class MonitoredListView Inherits ListView Public Event ItemAdded() Public Event ItemRemoved() Public Sub New() MyBase.New() End Sub Public Function AddItem(ByVal Text As String) As ListViewItem RaiseEvent ItemAdded() MyBase.Items.Add(Text) End Function Public Sub RemoveItem(ByVal Item As ListViewItem) RaiseEvent ItemRemoved() MyBase.Items.Remove(Item) End Sub End Class

Me gustaría habilitar / deshabilitar algunos otros controles basados ​​en cuántos elementos hay en mi control ListView . No puedo encontrar ningún evento que pueda hacer esto, ya sea en ListView o en ListViewItemCollection . Tal vez hay una forma de ver genéricamente cualquier colección en C # para los cambios?

Sería feliz con otros eventos también, incluso los que a veces se disparan cuando los elementos no cambian, pero por ejemplo los eventos ControlAdded y Layout no funcionaron :(.


Creo que lo mejor que puede hacer aquí es subclase ListView y proporcionar los eventos que desee.


No puedo encontrar ningún evento que puedas usar. Quizás podría subclase ListViewItemCollection y generar su propio evento cuando se agrega algo, con un código similar a este.

Public Class MyListViewItemCollection Inherits ListView.ListViewItemCollection Public Event ItemAdded(ByVal Item As ListViewItem) Sub New(ByVal owner As ListView) MyBase.New(owner) End Sub Public Overrides Function Add(ByVal value As System.Windows.Forms.ListViewItem) As System.Windows.Forms.ListViewItem Dim Item As ListViewItem Item = MyBase.Add(value) RaiseEvent ItemAdded(Item) Return Item End Function End Class