最近在弄一个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时则是读取该枝节点下包括所有子枝节点对应的所有叶节点。