¿Cómo puedo usar un evento para hacer que un método se ejecute?
Pregunta
Así que en mi documentación dice:
evento público TreeViewPlusNodeCheckedEventHandler NodeChecked ()
Puede usar este evento para ejecutar un método que se ejecute siempre que la casilla de verificación de un nodo está marcada en el árbol.
Entonces, ¿cómo agrego un método a mi código detrás del archivo que se ejecutará cuando se verifique un nodo? El método que quiero ejecutar es:
protected void TOCNodeCheckedServer(object sender, TreeViewPlusNodeEventArgs args)
{
TreeViewPlusNode aNode = args.Node;
if (!aNode.Checked)
return;
List<string> BaseLayers = new List<string>();
_arcTOCConfig.BaseDataLayers.CopyTo(BaseLayers);
List<MapResourceItem> mapResources = new List<MapResourceItem>();
if (BaseLayers.Contains(aNode.Text))
{
foreach (BaseDataLayerElement anEl in _arcTOCConfig.BaseDataLayers)
{
if (!aNode.Text.Equals(anEl.Name))
{
if (aNode.TreeViewPlus.Nodes.FindByValue(anEl.Name).Checked)
{
aNode.TreeViewPlus.Nodes.FindByValue(anEl.Name).Checked = false;
aNode.TreeViewPlus.Nodes.FindByValue(anEl.Name).Refresh();
MapResourceItem aMapResource = this.Map1.MapResourceManagerInstance.ResourceItems.Find(anEl.Name);
aMapResource.DisplaySettings.Visible = false;
this.Map1.RefreshResource(anEl.Name);
mapResources.Add(aMapResource);
this.Map1.MapResourceManagerInstance.ResourceItems.Remove(aMapResource);
}
else
{
MapResourceItem aMapResource = this.Map1.MapResourceManagerInstance.ResourceItems.Find(anEl.Name);
mapResources.Add(aMapResource);
this.Map1.MapResourceManagerInstance.ResourceItems.Remove(aMapResource);
}
}
}
foreach (MapResourceItem aMapResource in mapResources)
{
int count = this.Map1.MapResourceManagerInstance.ResourceItems.Count - 1;
this.Map1.MapResourceManagerInstance.ResourceItems.Insert(count, aMapResource);
this.Map1.MapResourceManagerInstance.CreateResource(aMapResource);
}
this.Map1.InitializeFunctionalities();
this.Map1.Refresh();
}
}
vs 2008 do# .net 3.5
Solución
Debe asignar un delegado al evento y hacer que ejecute el método que desee. Algo como:
TreeViewControl.NodeChecked + = new TreeViewPlusNodeCheckedEventHandler (TOCNodeCheckedServer)
Otros consejos
Solo agrega un controlador al evento.
myTreeView.NodeChecked += new TreeViewPlusNodeCheckedEventHandler(TOCNodeCheckedServer);
o (porque en realidad no es necesario crear una instancia de TreeViewPlusNodeCheckedEventHandler)
myTreeView.NodeChecked += TOCNodeCheckedServer;
Este es un caso estándar de registro de un controlador para un evento
treeView.NodeChecked += TOCNodeCheckedServer;
En su método de inicialización para el formulario agregar
TOCTree.NodeChecked += new TreeViewPlusNodeCheckedEventHandler (TOCNodeCheckedServer);
Esto le dirá a tu aplicación que ejecute TOCNodeCheckedServer cuando TOCNode active el evento NodeChecked.
Hay muchos recursos en la web que explican cómo funciona esto. Visite http://www.csharphelp.com/archives/archive253.html como ejemplo.