Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Puntatori a funzioni in VBNET
mercoledì 27 settembre 2006 - 01.47
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Xinner
Profilo
| Newbie
3
messaggi | Data Invio:
mer 27 set 2006 - 01:47
Salve,
ho un combobox che espone una serie di voci (ricavate da una proprietà di un array di una
classe), ciascuna delle quali, quando cliccata, deve richiamare una funzione diversa.
Di sicuro, potrei utilizzare una struttura select case end, di fatto abbinando a ciascun item
del combobox la relativa funzione: ma la soluzione mi pare assai poco elegante: ad es.
Select case Combo.SelectedIndex
case 0
fx1()
case 1
fx2()
end select
Vorrei, piuttosto, prevedere, nella classe di cui espongo i valori della proprietà tramite il
combobox, un'altra proprietà che abbia, in definitiva, come parametro, un puntatore a funzione e che mi consenta
di risolvere il problema con una sintassi del tipo:
MyClass(Combo.SelectedIndex).Invoke
Il concetto mi sembra avere a che fare con i delegate, ma, in definitiva, non so che pesci
prendere.
Qualcuno mi può dare una mano?
Grazie.
F.
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mer 27 set 2006 - 17:06
In c#
private object EseguiMetodo(object pObject, string pMetodo, object[] pParams)
{
// Creazione di un oggetto "tipo quello passato"
Type objType = pObject.GetType();
// MessageBox.Show(pParams[0].ToString() + " " + pParams.Length.ToString());
// Dichiaro un oggetto MethodInfo per memorizzare le informazioni sul metodo
System.Reflection.MethodInfo objMethodInfo;
// Get the MethodInfo for the current class. Binding Flags are specified to get the
// public and private Methods of this class. WhenPublic or Non-Public is specified
// in the BindingFlags, it is also necessary to specify Static or Instance
objMethodInfo = objType.GetMethod(pMetodo, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);
return objMethodInfo.Invoke(pObject, pParams);
}
Esempio di chiamata:
string sValue = this.cmbMetodo.SelectedValue.ToString();
object[] sParam = new object[1];
sParam[0] = (object) this.txtParam.Text;
if ( sValue != "")
EseguiMetodo(this,sValue,sParam);
Xinner
Profilo
| Newbie
3
messaggi | Data Invio:
mer 27 set 2006 - 18:29
Grazie!
Appena posso lo converto in VB e lo provo.
Torna su
Stanze Forum
Elenco Threads
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 !