示例#1
0
 /// <summary>User has selected a node. Raise event for presenter.</summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="TreeViewEventArgs"/> instance containing the event data.</param>
 private void OnAfterSelect(object sender, EventArgs e)
 {
     try
     {
         if (SelectedNodeChanged != null)
         {
             treeview1.CursorChanged -= OnAfterSelect;
             NodeSelectedArgs selectionChangedData = new NodeSelectedArgs();
             selectionChangedData.OldNodePath = previouslySelectedNodePath;
             TreePath       selPath;
             TreeViewColumn selCol;
             treeview1.GetCursor(out selPath, out selCol);
             selectionChangedData.NewNodePath = GetFullPath(selPath);
             if (selectionChangedData.NewNodePath != selectionChangedData.OldNodePath)
             {
                 SelectedNodeChanged.Invoke(this, selectionChangedData);
             }
             previouslySelectedNodePath = selectionChangedData.NewNodePath;
             treeview1.CursorChanged   += OnAfterSelect;
         }
     }
     catch (Exception err)
     {
         ShowError(err);
     }
 }
示例#2
0
        internal async Task SetSelectedNodeAsync(TNode node)
        {
            this.SelectedNode = node;
            await SelectedNodeChanged.InvokeAsync(node);

            StateHasChanged();
        }
示例#3
0
 /// <summary>User has selected a node. Raise event for presenter.</summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="TreeViewEventArgs"/> instance containing the event data.</param>
 private void OnAfterSelect(object sender, EventArgs e)
 {
     try
     {
         if (SelectedNodeChanged != null)
         {
             treeview1.CursorChanged -= OnAfterSelect;
             NodeSelectedArgs selectionChangedData = new NodeSelectedArgs();
             selectionChangedData.OldNodePath = previouslySelectedNodePath;
             TreePath       selPath;
             TreeViewColumn selCol;
             treeview1.GetCursor(out selPath, out selCol);
             selectionChangedData.NewNodePath = GetFullPath(selPath);
             if (selectionChangedData.NewNodePath != selectionChangedData.OldNodePath)
             {
                 SelectedNodeChanged.Invoke(this, selectionChangedData);
             }
             previouslySelectedNodePath = selectionChangedData.NewNodePath;
             treeview1.CursorChanged   += OnAfterSelect;
         }
         else
         {
             // Presenter is ignoring the SelectedNodeChanged event.
             // We should scroll to the newly selected node so the user
             // can actually see what they've selected.
             treeview1.GetCursor(out TreePath path, out _);
             treeview1.ScrollToCell(path, null, false, 0, 1);
         }
     }
     catch (Exception err)
     {
         ShowError(err);
     }
 }
示例#4
0
        static public void ChangeSelection(object sender, SelectionSet set)
        {
            SelectedTunnels = new List <DBTunnel>();
            SelectedNodes   = new List <DBNode>();

            if (set.Count != 0)
            {
                Document doc = Application.DocumentManager.MdiActiveDocument;
                Database db  = doc.Database;
                Editor   ed  = doc.Editor;

                var ids = set.GetObjectIds();
                Autodesk.AutoCAD.DatabaseServices.TransactionManager tm = db.TransactionManager;

                Utils.TransactionControl(() =>
                {
                    Entity entity = null;
                    foreach (var id in ids)
                    {
                        entity = (Entity)tm.GetObject(id, OpenMode.ForRead, false);
                        if (entity.IsErased == true)
                        {
                            return;
                        }
                        long handleValue = entity.Handle.Value;
                        if (entity is BaseTunnel)
                        {
                            DBTunnel dbTunnel = Utils.GetEntityFromDB(handleValue) as DBTunnel;

                            if (dbTunnel == null)
                            {
                                return;
                            }
                            else
                            {
                                SelectedTunnels.Add(dbTunnel);
                            }
                        }
                        else if (entity is Node)
                        {
                            DBNode dbNode = Utils.GetEntityFromDB(handleValue) as DBNode;
                            if (dbNode == null)
                            {
                                return;
                            }
                            else
                            {
                                SelectedNodes.Add(dbNode);
                            }
                        }
                    }
                });
            }
            SelectedTunnelChanged?.Invoke(sender, SelectedTunnels);
            SelectedNodeChanged?.Invoke(sender, SelectedNodes);
        }
示例#5
0
 /// <summary>User has selected a node. Raise event for presenter.</summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="TreeViewEventArgs"/> instance containing the event data.</param>
 private void OnAfterSelect(object sender, TreeViewEventArgs e)
 {
     if (SelectedNodeChanged != null)
     {
         NodeSelectedArgs selectionChangedData = new NodeSelectedArgs();
         selectionChangedData.OldNodePath = previouslySelectedNodePath;
         selectionChangedData.NewNodePath = FullPath(e.Node);
         SelectedNodeChanged.Invoke(this, selectionChangedData);
         previouslySelectedNodePath = selectionChangedData.NewNodePath;
     }
 }
示例#6
0
 /// <summary>User has selected a node. Raise event for presenter.</summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="TreeViewEventArgs"/> instance containing the event data.</param>
 private void OnAfterSelect(object sender, EventArgs e)
 {
     if (SelectedNodeChanged != null)
     {
         NodeSelectedArgs selectionChangedData = new NodeSelectedArgs();
         selectionChangedData.OldNodePath = previouslySelectedNodePath;
         TreePath       selPath;
         TreeViewColumn selCol;
         treeview1.GetCursor(out selPath, out selCol);
         selectionChangedData.NewNodePath = FullPath(selPath);
         SelectedNodeChanged.Invoke(this, selectionChangedData);
         previouslySelectedNodePath = selectionChangedData.NewNodePath;
     }
 }
示例#7
0
        /// <summary>
        /// 更新绑定数据
        /// </summary>
        private void UpdateBindData()
        {
            if (SelectedNodesDictionary.Count == 0)
            {
                SelectedKey   = null;
                SelectedNode  = null;
                SelectedData  = default(TItem);
                SelectedKeys  = Array.Empty <string>();
                SelectedNodes = Array.Empty <TreeNode <TItem> >();
                SelectedDatas = Array.Empty <TItem>();
            }
            else
            {
                var selectedFirst = SelectedNodesDictionary.FirstOrDefault();
                SelectedKey   = selectedFirst.Value?.Key;
                SelectedNode  = selectedFirst.Value;
                SelectedData  = selectedFirst.Value.DataItem;
                SelectedKeys  = SelectedNodesDictionary.Select(x => x.Value.Key).ToArray();
                SelectedNodes = SelectedNodesDictionary.Select(x => x.Value).ToArray();
                SelectedDatas = SelectedNodesDictionary.Select(x => x.Value.DataItem).ToArray();
            }

            if (SelectedKeyChanged.HasDelegate)
            {
                SelectedKeyChanged.InvokeAsync(SelectedKey);
            }
            if (SelectedNodeChanged.HasDelegate)
            {
                SelectedNodeChanged.InvokeAsync(SelectedNode);
            }
            if (SelectedDataChanged.HasDelegate)
            {
                SelectedDataChanged.InvokeAsync(SelectedData);
            }
            if (SelectedKeysChanged.HasDelegate)
            {
                SelectedKeysChanged.InvokeAsync(SelectedKeys);
            }
        }
示例#8
0
 private void OnSelectNode(TNode node)
 {
     SelectedNode = node;
     SelectedNodeChanged.InvokeAsync(node);
 }
示例#9
0
 private void TvDbItems_AfterSelect(object sender, TreeViewEventArgs e)
 {
     SelectedNodeChanged?.Invoke(sender, e);
 }
示例#10
0
 private void OnSelectedNodeChanged() => SelectedNodeChanged?.Invoke();
示例#11
0
 private void NodeChanged(SelectedNodeChanged _obj)
 {
     SelectedNode = _obj.Node;
 }