Richiamare Metodi in applicazioni MDI

sabato 15 gennaio 2005 - 11.59

Massimo40 Profilo | Newbie

Salve Ragazzi, ho il seguente problema banale ma sto impazzendo:
in una form child ho il seguente metodo:

public void button1_Click(object sender, System.EventArgs e)
{
ds.Clear();
//this.dg1.DataSource=ds;
bool Esito=false;
Accesso mc = new Accesso();
mc.Scmd = new SqlCommand();
mc.Scmd.Parameters.Add("@pag_descrizione", txtPag.Text + "%");

try
{
mc.AccessoDati("Pag]",false).Fill(ds, "Pagamenti");
}
catch
{
MessageBox.Show("Nessuna Tabella Individuata!");
Esito=true;
}
finally
{
mc.EsitoTrans(Esito);
}

}

Devo mandarlo in esecuzione da una voce di menu *Cerca* del Form mdiParent
ho provato così ma C# non compila:

private void mioDelegato(object sender, System.EventArgs e)
{
myDel mioDel = new myDel(this.ActiveMdiChild.button1_Click);
mioDel();
}
l'errore é:
'System.Windows.Forms.Form' non contiene una definizione per 'button1_Click'.

Grazie a tutti
Massimo

Cteniza Profilo | Guru

Io sapevo che i event delegate sono fatti in questo modo:
public delegate void EventHandler(object sender, EventArgs e);

poi:
public event EventHandler MyClick ;
// questo dichiarato come evento membro all'interno della classe

// aggiunta dell'evento alla textbox
myTextBox.MyClick += new System.EventHandler (this.myTextBox_MyClick);

// gestore dell'evento
protected void myTextBox_MyClick(object sender, System.EventArgs e)
...




Brainkiller Profilo | Guru

Sicuramente c'è altra soluzione migliore di quella che ti indico ma non essendo esperto in programmazione MDI...

Allora, crea una classe astratta e inserisci lì il codice del metodo che c'è sotto il button click.
In questo modo poi da qualunque parte dell'applicazione puoi eseguirlo digitando il nome della classe astratta punto il metodo e puoi passare dei aprametri:

classe.metodo(parametro 1, parametro2, ecc.)

Le classi astratte sono diverse dalle altre perchè non richiedono di essere istanziate (con la new)

ciao
david

Massimo40 Profilo | Newbie

Per BrainKiller:
Innanzi tutto grazie; non posso riferirmi ad una classe astratta, perchè comunque, dal form MDI devo passare parametri di una datagridid presente nel form child. Il metodo che richiamo, riempe semplicente un dataset tramite un dataAdapter restituito da una classe esterna, alla quale vengono passati parametri. Ho ancora in mente i retaggi del VB6 dove potevo fare: Screen.ActiveForm.MiaFunzionePubblica e la funzione Call.

Per Ctezia:
Ciao Luciano, sei anche qui ad illuninare noi poveri mortali?
Penso che un giorno dovrò farti un bel regalo. Vedrò di studiarmi meglio i delegate, sono un concetto ancora un pò ostico che non ho ben metabolizzato. Ma davvero non si riesce a mandare in esecuzione un metodo di una form child in modo + semplice tipo: this.ActiveMdiChild.button1_Click da una form parent?

Ciao e grazie di nuovo ad entrambi

Cteniza Profilo | Guru

Ciao,
Se vai sugli articoli presenti su www.visual-basic.it trovi alcune indicazioni sui delegate
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5