miércoles, mayo 02, 2007

Guardar una funcion en un Gtk.TreeStore

Recordando que en C puedes pasarle a una funcion casi lo que sea usando puneros, vi un codigo en donde presisamente declaran un TreeStore en donde un argumento putero significa una función.

En C# se logra lo mismo utilizando delegados...
public delegate void DelegatedMethod(); //Declaramos nuestro delegado
En donde construyamos nuestra ventana.
TreeStore store = new TreeStore(typeof(string), typeof(System.Delegate)); //uno tipo string y uno tipo Delegate
tv.model = store;
tv.AppendColumn ("Prueba", new CellRendererText (),"text",0);//solo mostramos el tipo string
for (int i=0; i<11;i++)
if ((i%2)==0)
store.AppendValues ("Numero par" + i,
new DelegatedMethod (delegate(){ //utilizamos un metodo anonimo Console.WriteLine ("El numero es par");
})
);
else
store.AppendValues ("Numero impar" + i,
new DelegatedMethod (delegate(){
Console.WriteLine ("El numero es impar");
})
);

Utilizando el evento RowActivated
DelegatedMethod method = (DelegatedMethod) view.Model.GetValue (iter,1);
method (); //invocamos el delegado.
Click en la imagen para obtener el codigo de este ejercicio.

demotreeview

No hay comentarios.: