visual tareas studio segundo progreso porcentaje plano net ejemplos con barra bar c# event-handling gdi+ trackbar

c# - tareas - progress bar visual studio



Evento desencadenante en la barra de seguimiento ValueChanged, pero no en el código (2)

Una forma de hacerlo es eliminar temporalmente los manejadores de eventos antes de modificar los valores en el código, y luego volver a conectarlos después, aunque esto no parece demasiado elegante.

Alternativamente, puede crear su propia clase TrackBar personalizada que hereda de TrackBar y anular el método OnValueChanged () para hacer lo que desee.

Si hiciste esto, una idea que puedo pensar es establecer una propiedad SuspendChangedEvents antes de cambiar el valor, y reiniciarlo después, Esto proporcionaría una funcionalidad similar a la técnica del controlador ''eliminar / adjuntar'', pero la lógica está encapsulada dentro de la propia barra de seguimiento .

public class MyTrackBar : TrackBar { public bool SuspendChangedEvent { get; set; } protected override void OnValueChanged(EventArgs e) { if (!SuspendChangedEvent) base.OnValueChanged(e); } }

Luego, en tu código puedes hacer algo como esto.

// Suspend trackbar change events myTrackBar1.SuspendChangedEvents = true; // Change the value myTrackBar1.Value = 50; // ValueChanged event will not fire. // Turn changed events back on myTrackBar1.SuspendChangedEvents = false;

Quiero poder modificar la propiedad del valor de una barra de seguimiento en el código sin activar mi controlador de eventos. Deseo activar el evento solo cuando el usuario cambie el control arrastrando el control deslizante o moviéndolo con el teclado. ¿Cuál es la forma más simple de lograr esto?

Tengo 6 trackbars y quiero cambiar el valor de 3 de ellos dependiendo de la barra de seguimiento que se modifique. El problema es que cambiar el valor de esas barras de seguimiento activará sus eventos ValueChanged.


Puede utilizar el evento Scroll en lugar de ValueChanged, este evento solo se activa cuando el usuario arrastra el control deslizante o usa las teclas para mover su valor, y los cambios que realice desde el código no lo activarán.