Comment utiliser un événement pour provoquer l'exécution d'une méthode?
Question
Ainsi, dans ma documentation, il est indiqué:
événement public TreeViewPlusNodeCheckedEventHandler NodeChecked ()
Vous pouvez utiliser cet événement pour exécuter une méthode à exécuter chaque fois que le La case à cocher correspondant à un noeud est cochée dans l'arborescence.
Alors, comment puis-je ajouter une méthode à mon code derrière le fichier qui sera exécuté lorsqu'un nœud est vérifié? La méthode que je veux exécuter est la suivante:
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 c # .net 3.5
La solution
Vous devez affecter un délégué à l'événement et le laisser exécuter la méthode souhaitée. Quelque chose comme:
TreeViewControl.NodeChecked + = new TreeViewPlusNodeCheckedEventHandler (TOCNodeCheckedServer)
Autres conseils
Ajoutez simplement un gestionnaire à l'événement.
myTreeView.NodeChecked += new TreeViewPlusNodeCheckedEventHandler(TOCNodeCheckedServer);
ou (car l'instanciation de TreeViewPlusNodeCheckedEventHandler n'est pas réellement nécessaire)
myTreeView.NodeChecked += TOCNodeCheckedServer;
Ceci est un cas standard d'enregistrement d'un gestionnaire pour un événement
treeView.NodeChecked += TOCNodeCheckedServer;
Sur votre méthode d'initialisation pour le formulaire, ajoutez
TOCTree.NodeChecked += new TreeViewPlusNodeCheckedEventHandler (TOCNodeCheckedServer);
Cela indiquera à votre application d'exécuter TOCNodeCheckedServer lorsque TOCNode déclenche l'événement NodeChecked.
Il existe de nombreuses ressources sur le Web expliquant comment cela fonctionne. Découvrez http://www.csharphelp.com/archives/archive253.html . à titre d'exemple.