Как я могу использовать событие для запуска метода?

StackOverflow https://stackoverflow.com/questions/135121

  •  02-07-2019
  •  | 
  •  

Вопрос

Итак, в моей документации написано:

публичное событие 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();
    }
}

против 2008 C# .NET 3.5

Это было полезно?

Решение

Вам необходимо назначить делегата событию и заставить его запускать нужный вам метод.Что-то вроде :

TreeViewControl.NodeChecked += новый TreeViewPlusNodeCheckedEventHandler(TOCNodeCheckedServer)

Другие советы

Просто добавьте обработчик к событию.

myTreeView.NodeChecked += new TreeViewPlusNodeCheckedEventHandler(TOCNodeCheckedServer);

или (поскольку создание экземпляра TreeViewPlusNodeCheckedEventHandler на самом деле не требуется)

myTreeView.NodeChecked += TOCNodeCheckedServer;

Это стандартный случай регистрации обработчика события.

treeView.NodeChecked += TOCNodeCheckedServer;

В вашем методе инициализации формы добавьте

TOCTree.NodeChecked += new TreeViewPlusNodeCheckedEventHandler (TOCNodeCheckedServer);

Это заставит ваше приложение запускать TOCNodeCheckedServer, когда TOCNode запускает событие NodeChecked.

В Интернете есть множество ресурсов, объясняющих, как это работает.Проверить http://www.csharphelp.com/archives/archive253.htmlВ качестве примера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top