¿Cómo puedo registrar C# si el botón.Haga clic en evento tiene algún controlador asociado? If (button.Click! = Null) arroja error de compilación.C# Controladores de eventos
Respuesta
No puede. Los eventos solo exponen "agregar un controlador" y "eliminar un controlador": eso es todo. (De hecho, en el CLR también puede tener metadatos para asociar un método con "desencadenar el evento", pero el compilador de C# nunca genera eso.) Algunos editores de eventos pueden ofrecer medios adicionales para verificar si hay suscriptores o no. ves esos suscriptores) pero no es parte del patrón del evento en sí.
Consulte my article about events para obtener más información, o consulte la etiqueta events (que voy a agregar a esta pregunta).
¿Por qué necesita esto? ¿Cuál es el contexto? Tal vez haya una mejor manera de lograr el resultado
El botón es un objeto externo y lo que intenta hacer es verificar su lista interna de suscriptores sin preguntarlo. Está violando la encapsulación.
Siempre debe dejar que el objeto administre los suscriptores para los eventos que expone. Si quería que los clientes lo supieran, habría expuesto un método HasClientsRegistered. No entres en.
Creo que puedes si estás en la clase que plantea el evento.
Puede definir el controlador y enumerar cada uno.
p. Ej. Si el evento se define como
event System.EventHandler NewEvent;
Luego, en el método de evento aumento puede crear que puede hacer ...
EventHandler handler = NewEvent;
if(handler != null)
{
handler(this, e);
}
qué le dará el guía y de que se puede obtener la lista de invocación .
EventDescriptor e = TypeDescriptor.GetEvents (yourObject) .Find ("yourEventName", true);
- 1. C# controladores de eventos personalizados
- 2. C# explícitamente Extracción de controladores de eventos
- 3. C# - funciones anónimas y controladores de eventos
- 4. Crear controladores de eventos C# vacíos automáticamente
- 5. Heredando controladores de eventos en C#
- 6. Controladores de eventos en C# - sintaxis/patrón
- 7. Eliminación de controladores de eventos
- 8. Diferencias en la asignación de controladores de eventos C#?
- 9. ¿Los controladores de eventos en C# deberían generar alguna excepción?
- 10. Nombrar correctamente los eventos y controladores de C#
- 11. Unidad de prueba Controladores de eventos Flex
- 12. jquery controladores de eventos "on" y "off"
- 13. controladores de eventos anónimo y desechar
- 14. ¿Los controladores de eventos no están seguros?
- 15. Cuándo conectar los controladores de eventos asp.net
- 16. jQuery, agregar y eliminar controladores de eventos
- 17. jQuery Traversing + Controladores de eventos en vivo
- 18. IoC: cableando dependencias en controladores de eventos
- 19. jQuery Controladores de eventos múltiples: ¿cómo cancelar?
- 20. jQuery 1.8 encontrar controladores de eventos
- 21. ¿Cómo deshacerse de los controladores de eventos de forma segura?
- 22. ¿Cómo declarar los controladores de eventos lambda en VB.Net?
- 23. Adición propio controlador de eventos frente a otros controladores de eventos
- 24. Configuración de controladores de eventos dentro de una estructura Setter.Value
- 25. Actualización de IU en controladores de eventos de elementos WPF
- 26. Escribiendo controladores en C#
- 27. ¿Se procesan los controladores de eventos de forma asíncrona?
- 28. Uso de expresiones lambda para controladores de eventos
- 29. Elimine correctamente los controladores de eventos de funciones anónimas
- 30. añadir dinámicamente controladores de eventos de jQuery a HTML dinámico
Para comprobar si hay suscriptores, solo necesita "if (NewEvent! = Null)" - pero esto no lo obtiene realmente del evento, sino que lo obtiene del campo de respaldo. Mi respuesta asume que el OP está interesado en otros eventos, dado el ejemplo "button.Click". –