Events BeforeClick en AfterClick op de ButtonX

0000002740     -      03-12-2020

Mercator laat toe om 2 events te onderscheppen op de ButtonX :

Zoom
[Description("Occurs before executing Click handler.")]
public event CancelEventHandler BeforeClick;
[Description("Occurs after executing Click handler.")]
public event EventHandler AfterClick;

 

Zij worden respectievelijk opgeroepen voor en na de aanroep van de Click delegate van de knop. Het event BeforeClick voorkomt het standaardgedrag van de knop door e.Cancel=true te definiëren.

Deze gebeurtenissen maken het mogelijk om het gedrag van Mercator aanzienlijk te wijzigen. Wij raden u aan om dit gematigd en met reden te gebruiken.

We tonen hieronder een voorbeeld waarin wordt getoond hoe je in het scherm met rappels een extra dialoogvenster kan weergeven wanneer je op de knop "Genereer" klikt.

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;
using System.Windows.Forms;

namespace Main
{
    public class Customizer : MercatorUi.ICustomizers.IExec
    {

        public void Main(MercatorUi.ICustomizers.ExecAction Action)
        {
            if (Action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
            {
                Globals.Main.BaseFormCreating += Main_BaseFormCreating;
            }
            else if (Action == MercatorUi.ICustomizers.ExecAction.DossierClose)
            {
                Globals.Main.BaseFormCreating -= Main_BaseFormCreating;
            }
        }

        void Main_BaseFormCreating(object sender, MercatorUi.Main.BaseFormCreatingEventArgs e)
        {
            if (e.Form is MercatorUi.Forms.Accounting.AccountingRemindersForm)
            {
                e.Form.Shown += Form_Shown;
                e.Form.FormClosed += Form_FormClosed;
            }
        }

        void Form_Shown(object sender, EventArgs e)
        {
            MercatorUi.Forms.Accounting.AccountingRemindersForm accountingRemindersForm = (MercatorUi.Forms.Accounting.AccountingRemindersForm)sender;
            accountingRemindersForm.Shown -= Form_Shown;
            accountingRemindersForm.ButtonGenerate.BeforeClick += ButtonGenerate_BeforeClick;
        }

        void Form_FormClosed(object sender, FormClosedEventArgs e)
        {
            MercatorUi.Forms.Accounting.AccountingRemindersForm accountingRemindersForm = (MercatorUi.Forms.Accounting.AccountingRemindersForm)sender;
            accountingRemindersForm.FormClosed -= Form_FormClosed;
            accountingRemindersForm.ButtonGenerate.BeforeClick -= ButtonGenerate_BeforeClick;
        }

        private void ButtonGenerate_BeforeClick(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (!Dialogs.AnswerYesNo("Bent u zeker dat u de rappels wilt genereren?"))
                e.Cancel = true; // de uitvoering van de Click-handler van de knop stoppen
        }
    }
}