كيف يمكنني استخدام حدث ما للتسبب في تشغيل طريقة ما؟

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();
    }
}

VS 2008 C# .NET 3.5

هل كانت مفيدة؟

المحلول

تحتاج إلى تعيين مفوض للحدث وتشغيله بالطريقة التي تريدها.شيء مثل :

TreeViewControl.NodeChecked += New 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