miércoles, 6 de julio de 2016

Controlar Evento Cambio de Focus en Fechas

Para controlar el cambio de foco en fechas se hace lo siguiente:
Creamos una bandera para saber si se presiono la tecla tabuladora o la tecla shift, tambien nos servira para cuando el control de la fecha pierda el foco.
bool banderaFrom = false;

Activamos el evento KeyDown del control.
void dateFrom_KeyDown(object sender, ystem.Windows.Forms.KeyEventArgs e) {
  if (e.KeyCode != Keys.Tab && e.KeyCode != Keys.ShiftKey) {
        banderaFrom = true;
        dateFrom.EditValueChanged -= dateFrom_EditValueChanged;
  }
  else if (banderaFrom) {
        banderaFrom = false;
        dateFrom_EditValueChanged(sender, new EventArgs());
        dateFrom.EditValueChanged += dateFrom_EditValueChanged;
  }
 }
Creamos el metodo LostFocus ya que este no se encuentra en el control:
void dateFrom_LostFocus(object sender, System.EventArgs e) {
   BaseRuntime.Trace("hcecli", "histórico", "dateFrom_LostFocus");

  if (banderaFrom) {
       banderaFrom = false;
       dateFrom_EditValueChanged(sender, new EventArgs());
       dateFrom.EditValueChanged += dateFrom_EditValueChanged;
  }
}
Pegamos al control en la parte del Designer el evento de la siguiente forma:
this.dateFrom.LostFocus += new System.EventHandler(this.dateFrom_LostFocus);

No hay comentarios: