Creación de 2 Delegados que serán pasados como parámetro del constructor de una clase. Un delegado no devuelve ningún tipo y el otro sí.
// Creamos los tipos de los delegados y sus variables que serán los parámetros del constructor
public delegate void Delegado(Silme.Nucleo.Data.NucVehiculo veh);
private Delegado d;
public delegate List<string> Delegado3Param(Silme.Nucleo.Data.NucVehiculo veh, bool b, Silme.Nucleo.Data.NucVehiculo veh2);
private Delegado3Param d3Param;
// Constructor con los 2 delagos como parámetros y asignación a una variable de la clase cada uno para poder llamar a los delegados
public FormVehiculo(Delegado pMetodo, Delegado3Param pMetodo3param)
{
InitializeComponent();
d = pMetodo;
d3Param = pMetodo3param;
}
// Funciones de ejemplo que llaman a los delegados
public override bool AntesBaja()
{
var veh = (Silme.Nucleo.Data.NucVehiculo)bindingXPO.Current;
if (veh != null)
{
try
{
List<string> listVeh = d3Param(veh, false, null);
if (listVeh.Count != 0)
{
MessageBox.Show("No es posible borrar el vehículo porque tiene referencias en otros formmularios. Revisa el historial del vehículo para más información.", "Información");
return false;
}
}
catch(Exception ex){
MessageBox.Show("Falta añadir delegado de 3 parámetros.", "Error");
}
}
return base.AntesBaja();
}
private void textEdit1_Leave(object sender, EventArgs e)
{
if (!(this.EstadoFormulario == Silme.Forms.FormEstado.Alta) && this.ContainsFocus)
{
bindingXPO.EndEdit();
var Veh = (Silme.Nucleo.Data.NucVehiculo)bindingXPO.Current;
if (Veh != null)
{
try
{
d(Veh);
}
catch (Exception ex)
{
MessageBox.Show("Error en el delegado. Falta parámetro del formulario", "Error");
}
}
}
}