/// <summary> /// Raises the MouseDown event. /// </summary> /// <param name="e">A MouseEventArgs that contains the event data.</param> protected override void OnMouseDown(MouseEventArgs e) { if (e.Button == MouseButtons.Left && ShowPlusMinus) { CTreeNode <T> toggleNode = null; this.Nodes.TraverseNodes(node => node.Visible && node.Nodes.Count > 0, node => { Point cursorLocation = e.Location; cursorLocation.Offset(-AutoScrollPosition.X, -AutoScrollPosition.Y); if (node.PlusMinus != null && node.PlusMinus.IsUnderMouse(cursorLocation)) { toggleNode = node; } }); ClearSelection(); if (toggleNode != null) { toggleNode.Toggle(); if (SelectionMode != CTreeViewSelectionMode.None) { toggleNode.IsSelected = true; } } } this.Focus(); base.OnMouseDown(e); }
// 返回目标账号为dstAcc的层级串 public string getCurLevelStr(string dstAcc) { if (!m_map.ContainsKey(dstAcc)) { return(""); } m_textBuilder.Remove(0, m_textBuilder.Length); CTreeNode node = m_map[dstAcc]; Stack <string> sk = new Stack <string>(); while (node != null) { if (node.Tag != null && sk.Count > 0) { URLParam param = (URLParam)node.Tag; sk.Push(Tool.genHyperlink(param)); } else { sk.Push(node.Value); } node = node.Parent; } while (sk.Count > 0) { m_textBuilder.Append(sk.Pop()); m_textBuilder.Append(">"); } return(m_textBuilder.ToString()); }
private void AddNode(DataTable dtAll, int ParentId, CTreeNode treeNodeParent) { DataRow[] drs = dtAll.Select("ParentID=" + ParentId + ""); if (drs.Length > 0) { foreach (DataRow item in drs) { if (item["TableNameRel"].ToString() == "Key") { CTreeNode treeNode = new CTreeNode(new Label()); ((Label)treeNode.Control).Text = item["TableName"].ToString(); ((Label)treeNode.Control).Width = 100; ((Label)treeNode.Control).AutoSize = true; ((Label)treeNode.Control).TextAlign = ContentAlignment.MiddleCenter; treeNodeParent.Nodes.Add(treeNode); AddNode(dtAll, int.Parse(item["Id"].ToString()), treeNode); } else { CTreeNode treeNode = new CTreeNode(new DataGridView()); ((DataGridView)treeNode.Control).Columns.Add("1", "1"); ((DataGridView)treeNode.Control).Columns.Add("2", "2"); ((DataGridView)treeNode.Control).Rows.Add(new string[] { "a", "b" }); treeNodeParent.Nodes.Add(treeNode); AddNode(dtAll, int.Parse(item["Id"].ToString()), treeNode); } } } }
public List <CTreeNode> GetUsedChildeList(CTreeNode node) { if (_branchUsedChildeList.ContainsKey(node) == false) { _branchUsedChildeList[node] = new List <CTreeNode>(); } return(_branchUsedChildeList[node]); }
private void FrmTableRelationView_Load(object sender, EventArgs e) { IDBHelper helper = DataBaseManager.GetDbHelper(SqlType.SqlServer, GlobalHelp.ConfigConn); helper.CreateCommand("Select * from TableView order by ParentID"); DataTable dt = helper.ExecuteQuery(); dataGridView1.DataSource = dt; if (dt.Rows.Count == null || dt.Rows.Count == 0) { return; } cTreeView1.DrawStyle = CTreeViewDrawStyle.VerticalDiagram; cTreeView1.ShowRootLines = false; DataTable dtParent = dt.Select("ParentId=0").CopyToDataTable(); for (int i = 0; i < dtParent.Rows.Count; i++) { CTreeNode treeNode = new CTreeNode(new Label()); ((Label)treeNode.Control).Text = dtParent.Rows[i]["TableName"].ToString(); ((Label)treeNode.Control).Width = 100; ((Label)treeNode.Control).AutoSize = true; ((Label)treeNode.Control).TextAlign = ContentAlignment.MiddleCenter; cTreeView1.Nodes.Add(treeNode); AddNode(dt, int.Parse(dtParent.Rows[i]["Id"].ToString()), treeNode); } //cTreeView1.Nodes.Add(new CTreeNode(new Label())); //((Label)cTreeView1.Nodes[0].Control).Text = "附属设施关系"; //((Label)cTreeView1.Nodes[0].Control).Width = 100; //((Label)cTreeView1.Nodes[0].Control).AutoSize = true; //((Label)cTreeView1.Nodes[0].Control).TextAlign = ContentAlignment.MiddleCenter; //cTreeView1.Nodes[0].Nodes.Add(new CTreeNode(new Label())); //((Label)cTreeView1.Nodes[0].Nodes[0].Control).Text = "RuleId_DetailId"; //((Label)cTreeView1.Nodes[0].Nodes[0].Control).Width = 100; //((Label)cTreeView1.Nodes[0].Nodes[0].Control).AutoSize = true; //((Label)cTreeView1.Nodes[0].Nodes[0].Control).TextAlign = ContentAlignment.MiddleCenter; ////下面添加两个GridView //cTreeView1.Nodes[0].Nodes[0].Nodes.Add(new CTreeNode(new DataGridView())); //((DataGridView)cTreeView1.Nodes[0].Nodes[0].Nodes[0].Control).Columns.Add("1", "1"); //((DataGridView)cTreeView1.Nodes[0].Nodes[0].Nodes[0].Control).Columns.Add("2", "2"); //((DataGridView)cTreeView1.Nodes[0].Nodes[0].Nodes[0].Control).Rows.Add(new string[] { "a", "b" }); //cTreeView1.Nodes[0].Nodes[0].Nodes.Add(new CTreeNode(new DataGridView())); //((DataGridView)cTreeView1.Nodes[0].Nodes[0].Nodes[1].Control).Columns.Add("1", "1"); //((DataGridView)cTreeView1.Nodes[0].Nodes[0].Nodes[1].Control).Columns.Add("2", "2"); //((DataGridView)cTreeView1.Nodes[0].Nodes[0].Nodes[1].Control).Rows.Add(new string[] { "a", "b" }); //cTreeView1.Nodes[0].Nodes[0].Nodes[1].Nodes.Add(new CTreeNode(new Label())); //((Label)cTreeView1.Nodes[0].Nodes[0].Nodes[1].Nodes[0].Control).Text = "RuleId_DetailId"; //((Label)cTreeView1.Nodes[0].Nodes[0].Nodes[1].Nodes[0].Control).Width = 100; //((Label)cTreeView1.Nodes[0].Nodes[0].Nodes[1].Nodes[0].Control).AutoSize = true; //((Label)cTreeView1.Nodes[0].Nodes[0].Nodes[1].Nodes[0].Control).TextAlign = ContentAlignment.MiddleCenter; }
private void Form1_Load(object sender, EventArgs e) { cTreeView2.BeginUpdate(); cTreeView2.Nodes.Add(new CTreeNode(new Class4("root"))); for (int i = 0; i < 2; i++) { cTreeView2.Nodes[0].Nodes.Add(new CTreeNode(new Class4("child " + i))); for (int j = 0; j < 3; j++) { cTreeView2.Nodes[0].Nodes[i].Nodes.Add(new CTreeNode(new Class4("child " + i + "-" + j))); for (int k = 0; k < 3; k++) { cTreeView2.Nodes[0].Nodes[i].Nodes[j].Nodes.Add(new CTreeNode(new Class4("child " + i + "-" + j + "-" + k))); } } } cTreeView2.EndUpdate(); cTreeView3.BeginUpdate(); cTreeView3.Nodes.Add(new CTreeNode("", new Class1(""))); cTreeView3.Nodes.Add(new CTreeNode("", new Class3())); cTreeView3.Nodes[1].Nodes.Add(new CTreeNode("", new Class1(""))); CTreeNode n1 = new CTreeNode("", new Class1("")); n1.Nodes.Add(new CTreeNode("", new Class1(""))); n1.Nodes.Add(new CTreeNode("", new Class2(""))); cTreeView3.Nodes[0].Nodes.Add(n1); cTreeView3.Nodes[0].Nodes.Add(new CTreeNode("", new Class2(""))); cTreeView3.Nodes[0].Nodes[1].Nodes.Add(new CTreeNode("", new Class1(""))); cTreeView3.Nodes[0].Nodes[1].Nodes.Add(new CTreeNode("", new Class1(""))); cTreeView3.Nodes[0].Nodes[1].Nodes.Add(new CTreeNode("", new Class1(""))); cTreeView3.EndUpdate(); cTreeView1.BeginUpdate(); cTreeView1.Nodes.Add(new CTreeNode(new Button())); ((Button)cTreeView1.Nodes[0].Control).Text = "button"; ((Button)cTreeView1.Nodes[0].Control).MouseClick += new MouseEventHandler((sender1, e1) => { MessageBox.Show("MouseClick!"); }); cTreeView1.Nodes.Add(new CTreeNode(new CheckBox())); ((CheckBox)cTreeView1.Nodes[1].Control).Checked = true; ((CheckBox)cTreeView1.Nodes[1].Control).Width = 15; cTreeView1.Nodes[0].Nodes.Add(new CTreeNode(new ComboBox())); ((ComboBox)cTreeView1.Nodes[0].Nodes[0].Control).Items.AddRange(new string[] { "1", "2", "3" }); cTreeView1.Nodes[0].Nodes.Add(new CTreeNode(new RadioButton())); ((RadioButton)cTreeView1.Nodes[0].Nodes[1].Control).Width = 15; ((RadioButton)cTreeView1.Nodes[0].Nodes[1].Control).Checked = true; cTreeView1.Nodes[0].Nodes[1].Nodes.Add(new CTreeNode(new ProgressBar())); ((ProgressBar)cTreeView1.Nodes[0].Nodes[1].Nodes[0].Control).Value = 20; cTreeView1.Nodes[1].Nodes.Add(new CTreeNode(new TextBox())); ((TextBox)cTreeView1.Nodes[1].Nodes[0].Control).Text = "text box"; cTreeView1.Nodes[1].Nodes.Add(new CTreeNode(new ListBox())); ((ListBox)cTreeView1.Nodes[1].Nodes[1].Control).Items.AddRange(new string[] { "1", "2", "3", "4", "5", "6", "7", "8" }); cTreeView1.Nodes[1].Nodes[1].Nodes.Add(new CTreeNode(new DataGridView())); ((DataGridView)cTreeView1.Nodes[1].Nodes[1].Nodes[0].Control).Columns.Add("1", "1"); ((DataGridView)cTreeView1.Nodes[1].Nodes[1].Nodes[0].Control).Columns.Add("2", "2"); ((DataGridView)cTreeView1.Nodes[1].Nodes[1].Nodes[0].Control).Rows.Add(new string[] { "a", "b" }); cTreeView1.EndUpdate(); }
private void SetSelSp(CTreeNode node) { if (node.type == CTreeNode.NodeType.Branch) { spSelected.transform.localPosition = new Vector3(PaddingLeft, spSelected.height + 100, 0); } else { spSelected.transform.localPosition = node.tran.localPosition; } }
private void WriteNodeLink(TreeView treeView, TreeNode item, HtmlTextWriter writer) { writer.WriteBeginTag("a"); if (!String.IsNullOrEmpty(item.NavigateUrl)) { writer.WriteAttribute("href", Extender.ResolveUrl(item.NavigateUrl)); if (item is CTreeNode) { CTreeNode node = (CTreeNode)item; if (node.OnClientClick.Length > 0) { writer.WriteAttribute("onclick", node.OnClientClick); } } } else { string codePrefix = ""; if (item.SelectAction == TreeNodeSelectAction.Select) { codePrefix = "s"; } else if (item.SelectAction == TreeNodeSelectAction.SelectExpand) { codePrefix = "e"; } else if (item.PopulateOnDemand) { codePrefix = "p"; } writer.WriteAttribute("href", Page.ClientScript.GetPostBackClientHyperlink(treeView, codePrefix + (Page.Server.HtmlEncode(item.ValuePath)).Replace("/", "\\"), true)); } WebControlAdapterExtender.WriteTargetAttribute(writer, item.Target); if (!String.IsNullOrEmpty(item.ToolTip)) { writer.WriteAttribute("title", item.ToolTip); } else if (!String.IsNullOrEmpty(treeView.ToolTip)) { writer.WriteAttribute("title", treeView.ToolTip); } writer.Write(HtmlTextWriter.TagRightChar); writer.Indent++; writer.WriteLine(); WriteNodeImage(treeView, item, writer); writer.Write(item.Text); writer.Indent--; writer.WriteEndTag("a"); }
public void RollTo(CTreeNode node) { float y = -node.y; if (TotalHeight > this.height && y > TotalHeight - this.height) { y = TotalHeight - this.height; } //contentPos.y = y; //maskOffset.y = -y; Bar.value = y / (TotalHeight - this.height); }
protected void OnItemPress(GameObject go, bool isPressed, bool needEvent) { if (isPressed) { CTreeNode c = go.GetDisplayObj() as CTreeNode; SelectedItem = c; if (OnItemSelect != null && needEvent) { OnItemSelect(c); SetSelSp(c); } } }
/// <summary> /// 数型目录的装配 /// </summary> /// <param name="CRoot"></param> /// <param name="RootTreeNode"></param> private void FillTreeView(CTreeNode CRoot, TreeNode RootTreeNode) { foreach (var child in CRoot.Children) { TreeNode ChildTreeNode = new TreeNode(child.Text); if (child.Children.Count == 0) { ChildTreeNode.Tag = child.Path; } FillTreeView(child, ChildTreeNode); RootTreeNode.Nodes.Add(ChildTreeNode); } }
/// <summary> /// 数型目录的装配 /// </summary> /// <param name="cRoot"></param> /// <param name="rootTreeNode"></param> private void FillTreeView(CTreeNode cRoot, TreeNode rootTreeNode) { foreach (var child in cRoot.Children) { var childTreeNode = new TreeNode(child.Text); if (child.Children.Count == 0) { childTreeNode.Tag = child.Path; } FillTreeView(child, childTreeNode); rootTreeNode.Nodes.Add(childTreeNode); } }
/// <summary> /// Retrieves the tree node that is at the specified point. /// </summary> /// <param name="pt">The Point to evaluate and retrieve the node from.</param> /// <returns>The CTreeNode<T> at the specified point, in client coordinates, or null if there is no node at that location.</returns> public CTreeNode <T> GetNodeAt(Point pt) { bool success = false; CTreeNode <T> nodeAtPoint = null; Nodes.TraverseNodes(node => node.Visible && !success, node => { if (node.Bounds.Contains(pt)) { nodeAtPoint = node; success = true; } }); return(nodeAtPoint); }
/// <summary> /// 从外部文件中获取Options列表 /// </summary> public static CTreeNode LoadDefines() { var definelist = new List<ConfigurationFileOption.Define>(); definelist = Utility.LoadObjFromXml<List<ConfigurationFileOption.Define>>(DefineFilename); definelist.Sort((x, y) => { return x.Path.CompareTo(y.Path); }); //Root Node var root = new CTreeNode(string.Empty); foreach (var item in definelist) { Debug.WriteLine(item.Path); CTreeNode.AddToRootNode(root, item.Path); ConfigurationItemDictionary.Add(item.Path, item); } return root; }
private void RecycleBranchItem(CTreeNode node) { if (_branchUsedList.Contains(node)) { _branchUsedList.Remove(node); } if (_branchPool.Contains(node) == false) { _branchPool.Add(node); } node.data.isOpen = false; node.SetParent(Recycle); node.tran.localPosition = Vector3.zero; node.SetActive(false); CheckOpenAndResetChilde(node); }
private bool IsExpandable(TreeNode item) { if (!Page.IsPostBack) { if ((item != null) && (item is CTreeNode)) { CTreeNode node = item as CTreeNode; if (!node.HasVisibleChildren) { return(false); } } } return(HasChildren(item) || ((item != null) && item.PopulateOnDemand)); }
int MaxDepth() { int iDepth, iMax = 1; CTreeNode pChild = FirstChild(); while (pChild != null) { iDepth = pChild.MaxDepth() + 1; if (iDepth > iMax) { iMax = iDepth; } } return(iMax); }
protected void OnItemHover(object go, bool isOver) { if (isOver) { CTreeNode node = ((GameObject)go).GetDisplayObj() as CTreeNode; //if (node.type == CTreeNode.NodeType.Branch) { Overlay.SetDimensions(branchWidth, branchHeight); //} else { // Overlay.SetDimensions(leafWidth, leafHeight); //} Overlay.transform.localPosition = ((GameObject)go).transform.localPosition; } else { Overlay.transform.localPosition = new Vector3(PaddingLeft, Overlay.height + 100, 0); } }
protected void OnItemPress(object go, bool isPressed) { if (isPressed) { CTreeNode c = ((GameObject)go).GetDisplayObj() as CTreeNode; SetSelectedItem(c); if (c.type == CTreeNode.NodeType.Branch) { RollTo(c); } if (OnItemSelect != null) { OnItemSelect(c); SetSelSp(c); } } }
// 添加根账号 public void addRootAcc(string rootAcc, URLParam param = null) { reset(); if (m_tree.Nodes.Count > 0) { LOGW.Info("addRootAcc错误........"); return; } CTreeNode node = new CTreeNode(); node.Value = rootAcc; node.Tag = param; if (param != null) { param.m_text = node.Value; param.m_className = "cAgentLevelStr"; } m_tree.Nodes.Add(node); m_map.Add(rootAcc, node); }
// 添加某个指定账号的下级账号 // owner指定账号 subAcc下级账号 public void addSub(string owner, string subAcc, URLParam param = null) { if (!m_map.ContainsKey(owner)) { return; } if (m_map.ContainsKey(subAcc)) { return; } bool exist = false; CTreeNode node = m_map[owner]; foreach (CTreeNode child in node.ChildNodes.Values) { if (child.Value == subAcc) { exist = true; break; } } if (!exist) { CTreeNode n = new CTreeNode(); n.Value = subAcc; n.Tag = param; if (param != null) { param.m_text = n.Value; param.m_className = "cAgentLevelStr"; } node.ChildNodes.Add(n); m_map.Add(subAcc, n); } }
public CTreeNode(CTreeNode pNode, ENodeCreate eFlag) { CTreeNode pPrev, pPost; m_pChild = null; switch (eFlag) { case ENodeCreate.ENODE_FIRST_CHILD: m_pParent = pNode; if (pNode.m_pChild != null) { pPost = pNode.m_pChild; pPrev = pNode.m_pChild.m_pLeftBrother; pPrev.m_pRightBrother = this; pPost.m_pLeftBrother = this; m_pRightBrother = pPost; m_pLeftBrother = pPrev; pNode.m_pChild = this; } else { m_pLeftBrother = this; m_pRightBrother = this; pNode.m_pChild = this; } break; case ENodeCreate.ENODE_LAST_CHILD: m_pParent = pNode; if (pNode.m_pChild != null) { pPost = pNode.m_pChild; pPrev = pNode.m_pChild.m_pLeftBrother; pPrev.m_pRightBrother = this; pPost.m_pLeftBrother = this; m_pRightBrother = pPost; m_pLeftBrother = pPrev; } else { m_pLeftBrother = this; m_pRightBrother = this; pNode.m_pChild = this; } break; case ENodeCreate.ENODE_RIGHT_BROTHER: m_pParent = pNode.m_pParent; m_pRightBrother = pNode.m_pRightBrother; m_pLeftBrother = pNode; pNode.m_pRightBrother.m_pLeftBrother = this; pNode.m_pRightBrother = this; break; case ENodeCreate.ENODE_LEFT_BROTHER: m_pParent = pNode.m_pParent; m_pLeftBrother = pNode.m_pLeftBrother; m_pRightBrother = pNode; pNode.m_pLeftBrother.m_pRightBrother = this; pNode.m_pLeftBrother = this; if (m_pParent != null && m_pParent.m_pChild == pNode) { m_pParent.m_pChild = this; } break; } }
public void Add(CTreeNode node) { node.Parent = m_owner; m_nodes.Add(node.Value, node); }
public CTreeNodeCollection(CTreeNode owner) { m_owner = owner; }
private void CheckOpenAndResetChilde(CTreeNode branchItem) { int offX = 10; CTreeNodeData parentData = branchItem.data.parent;; while (parentData != null) { offX += 10; parentData = parentData.parent; } int chlidLen = 0; if (branchItem.data.isOpen) { int startIndex = chlidLen; if (branchItem.data.child != null) { chlidLen += branchItem.data.child.Count; } for (int n = 0; (n + startIndex) < chlidLen; n++) { CTreeNode child; var childeList = GetUsedChildeList(branchItem); if ((n + startIndex) < childeList.Count) { child = childeList[n + startIndex]; } else { child = GetBranchItem(); childeList.Add(child); } if (_branchUsedList.Contains(child) == false) { _branchUsedList.Add(child); } child.name = "Item" + n; child.SetParent(Content.transform); child.SetActive(true); child.data = branchItem.data.child[n]; float childY; childY = -TotalHeight; child.tran.localPosition = new Vector3(offX, childY, 0); UIEventListener childListener = UIEventListener.Get(child.go); childListener.onHover = OnItemHover; childListener.onPress = OnItemPress; TotalHeight += _branchHeight + branchGapU; CheckOpenAndResetChilde(child); } } else { var childeList = GetUsedChildeList(branchItem); for (int n = 0, len = childeList.Count; n < len; n++) { RecycleBranchItem(childeList[n]); } childeList.Clear(); } }
public void SetSelectedItem(CTreeNode node) { node.data.isOpen = !node.data.isOpen; ResetItems(); }