做网站要懂什么编程,免费行情软网站,wordpress添加产品产品列表,三合一网站搭建价格C# 使用 TreeView 实践 WinRiver II 的测量管理功能 一、WinRiver II 的测量管理界面二、C# 实现 TreeView 的测量管理界面三、C# 2017 .Net FrameWork 框架代码实现3.1、图像中图标拆分的代码实现3.1.1 准备包含图标的 PNG 图片3.1.2 在 C# 2017 .Net FrameWork 框架项目中添加该图片资源。3.1.3 在项目代码中使用 imageList 载入图标集合 3.2、C# 实现 TreeView 的测量管理的代码 一、WinRiver II 的测量管理界面
WinRiver II 是ADCP 测量软件其测量管理界面实际是 TreeView 控件的应用。
二、C# 实现 TreeView 的测量管理界面
1、TreeView 图标载入 2、只点击复选框图标改变复选框选择点击文字部分不改变复选框选择。
三、C# 2017 .Net FrameWork 框架代码实现
3.1、图像中图标拆分的代码实现
3.1.1 准备包含图标的 PNG 图片
如下 PNG 图片每个图标大小为 16*16。
3.1.2 在 C# 2017 .Net FrameWork 框架项目中添加该图片资源。 3.1.3 在项目代码中使用 imageList 载入图标集合
引用声明 using System;using System.Drawing;using System.Windows.Forms;图片拆分为图标并加载到 imageList Image sourceImage Properties.Resources.PicturesGroup;//从资源中获取图像ImageList imageList new ImageList();//新建图像集合列表for (int i 0; i 272; i 16){Bitmap targetImage new Bitmap(16, 16);//目标图像using (Graphics g Graphics.FromImage(targetImage))// 使用Graphics对象绘制原始图片的一部分到目标Bitmap上{g.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;// 设置高质量插值法g.DrawImage(sourceImage, new Rectangle(0, 0, 16, 16), new Rectangle(i, 0, 16, 16), GraphicsUnit.Pixel);// 绘制图片的一部分到目标Bitmap上指定源和目标区域的坐标和尺寸}imageList.Images.Add(targetImage);//将拆分的图像加载到图像集合列表}
3.2、C# 实现 TreeView 的测量管理的代码 treeView1.FullRowSelect false; // 确保不选中整行treeView1.StateImageList imageList;//将图像集合列表赋与treeViewTreeNode Root1 new TreeNode(项目文件);Root1.StateImageIndex 1;//图片列表中第2个图标treeView1.Nodes.Add(Root1);TreeNode Root2 new TreeNode(项目测站信息);Root2.StateImageIndex 5;//图片列表中第6个图标treeView1.Nodes.Add(Root2);TreeNode Root3 new TreeNode(项目测量);Root3.StateImageIndex 5;treeView1.Nodes.Add(Root3);// 然后向根节点添加子节点TreeNode childNode1 new TreeNode(测次 000);childNode1.StateImageIndex 2;//图片列表中第3个图标未选中childNode1.Checked false;Root3.Nodes.Add(childNode1);TreeNode childNode2 new TreeNode(测次 001);childNode2.StateImageIndex 2;//图片列表中第3个图标未选中childNode2.Checked false;Root3.Nodes.Add(childNode2);treeView1.ExpandAll();//自动展开所有节点节点点击事件 private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e){TreeNode node e.Node;//当前鼠标的单击节点if (node ! null e.Button MouseButtons.Left){Point checkBoxPosition new Point(e.Node.Bounds.Left - 16, e.Node.Bounds.Top (e.Node.Bounds.Height - 16) / 2); // 估算复选框位置if (e.X checkBoxPosition.X e.X checkBoxPosition.X 16 e.Y checkBoxPosition.Y e.Y checkBoxPosition.Y 16){string NodeText node.Text.Substring(0, 2);if (NodeText 测次){if (node.Checked){node.Checked false;node.StateImageIndex 2;//图片列表中第3个图标未选中}else{node.Checked true;node.StateImageIndex 3;//图片列表中第4个图标已选中}}Console.WriteLine(node.Checked);}}}为什么不采用 treeView1.CheckBoxes true 使用 treeView 复选框因为采用此功能所有的节点都有复选框这是不需要的。