如何使用事件使方法运行?

时间:2008-09-25 18:35:50

标签: c# .net events methods

所以在我的文档中说:

  

公共事件TreeViewPlusNodeCheckedEventHandler NodeChecked()

     

你可以使用这个事件来运行一个方法来运行   在树上检查节点的复选框。

那么如何在我的代码隐藏文件中添加一个方法,该方法将在检查节点时运行?我想要运行的方法是:

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

4 个答案:

答案 0 :(得分:5)

您需要为事件分配一个委托,并让它运行您想要的方法。类似的东西:

TreeViewControl.NodeChecked + = new TreeViewPlusNodeCheckedEventHandler(TOCNodeCheckedServer)

答案 1 :(得分:2)

只需为事件添加处理程序。

myTreeView.NodeChecked += new TreeViewPlusNodeCheckedEventHandler(TOCNodeCheckedServer);

或(因为实际上不需要实例化TreeViewPlusNodeCheckedEventHandler)

myTreeView.NodeChecked += TOCNodeCheckedServer;

答案 2 :(得分:2)

这是注册事件处理程序的标准情况

treeView.NodeChecked += TOCNodeCheckedServer;

答案 3 :(得分:0)

在表格添加

的初始化方法上
TOCTree.NodeChecked += new TreeViewPlusNodeCheckedEventHandler (TOCNodeCheckedServer);

当TOCNode触发NodeChecked事件时,这将告诉您的应用运行TOCNodeCheckedServer。

网上有大量资源说明其工作原理。查看http://www.csharphelp.com/archives/archive253.html  举个例子。