最近在弄一個OPC客戶端,發現網上的關於OPC的資料相對比較少。我也花了幾天時間研究了下,有點小心得拿出來給大家分享下。
OPCBrowser遍歷構建Tree:
private void BuildTree(TreeNode node) { TreeNode treeNode; Global.KeyBrowser.ShowBranches(); foreach (object Branch in Global.KeyBrowser) { if (node == null) { treeNode = this.tvBrowser.Nodes.Add(Branch.ToString()); } else { treeNode = node.Nodes.Add(Branch.ToString()); } Global.KeyBrowser.MoveDown(Branch.ToString()); BuildTree(treeNode); Global.KeyBrowser.MoveUp(); } }
點擊Tree節點列表所有OPCBrowser下的枝節點下的葉節點:
private void tvBrowser_AfterSelect(object sender, TreeViewEventArgs e) { //獲取葉節點 lBoxItem.Items.Clear(); if (tvBrowser.SelectedNode != null) { string path = tvBrowser.SelectedNode.FullPath; Array Branches = path.Split('\\'); Global.KeyBrowser.MoveTo(ref Branches); Global.KeyBrowser.ShowLeafs(false); foreach (object item in Global.KeyBrowser) { lBoxItem.Items.Add(item); } Global.KeyBrowser.ShowLeafs(false); Global.KeyBrowser.MoveToRoot(); } }
這邊要注意是一下這句:
Global.KeyBrowser.ShowLeafs(false);
當參數為false的時候只讀取當前枝節點下只屬於該枝節點的葉節點;為True時則是讀取該枝節點下包括所有子枝節點對應的所有葉節點。