c# 实验七 图像列表框及树形视图控件的使用

news2024/11/23 12:52:35

前言
👏作者简介:我是笑霸final,一名热爱技术的在校学生。
📝个人主页:个人主页1 || 笑霸final的主页2
📕系列专栏:《项目专栏》
📧如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🔥如果感觉博主的文章还不错的话,👍点赞👍 + 👀关注👀 + 🤏收藏🤏

在这里插入图片描述

目录

  • 一、实验目的
  • 二、实验任务
    • 2.1. 创建Windows窗体应用程序,利用图像列表框控件浏览图片。如图7.1所示。具体要求为:
    • 2.2.创建Windows窗体应用程序,利用树视图控件显示有层次关系的信息,用户可以自行添加或删除控件中的节点,效果如图7.2-7.5所示。具体要求为:

一、实验目的

1.掌握ImageList控件的使用。
2.掌握TreeView控件的使用。

二、实验任务

2.1. 创建Windows窗体应用程序,利用图像列表框控件浏览图片。如图7.1所示。具体要求为:

(1)点击“选择图片”加载多张图片文件。
(2)图片加载后,点击“自动播放”可实现图片的自动播放效果。
在这里插入图片描述

源代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar;

namespace 第一题
{
  
    public partial class Form1 : Form
    {
        int count = 0;//初始化图片个数
        int tep = 0;
        OpenFileDialog openFileDialog1=new OpenFileDialog();//选择框对象
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            try
            {//异常处理
             //选择图片
                openFileDialog1.ShowDialog();
                string[] st = openFileDialog1.FileNames;
                pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);
                
            }
            catch(Exception e1)
            {
                //退出当前添加
                return;
            }

            count = openFileDialog1.FileNames.Length;
            for (int j = 0; j < count; j++)//为imageList1加载在openFileDialog1中选中的图片
                imageList1.Images.Add(Image.FromFile(openFileDialog1.FileNames[j]));


        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //初始化一些参数
            timer1.Interval = 1000;//1秒
            openFileDialog1.Multiselect = true;//可以多选
            openFileDialog1.Filter = "PNG(*.png)|*.png|JPG(*.jpg)|*.jpg|BMP(*.bmp)|*.bmp";
            imageList1.ImageSize = new Size(256, 256);//图片大小
            pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Start();//开始记时
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            tep++;
            pictureBox1.Image = imageList1.Images[tep%count];//循环播放图片
        }
    }
}

在这里插入图片描述


2.2.创建Windows窗体应用程序,利用树视图控件显示有层次关系的信息,用户可以自行添加或删除控件中的节点,效果如图7.2-7.5所示。具体要求为:

(1)初始时的三层结点结构采用代码生成。
(2)添加结点可实现添加根结点、子结点和兄弟结点。
(3)删除结点时,若其包含子结点,应给出消息框,确认是否删除,若选择了“是”则将该结点删除,否则取消删除。
(4)显示所选结点的子节点到右侧的ListBox中,若某节点无子节点,在消息框中提示“所选节点无子节点”。
(5)获取所选节点的路径显示在窗体的标题栏中。在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

源代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;

namespace 第二题
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

       
        private void Form1_Load(object sender, EventArgs e)
        {
            //初始化生成3层节点
            treeView1.Nodes.Add("it");
            treeView1.Nodes[0].Nodes.Add("后端");
            treeView1.Nodes[0].Nodes[0].Nodes.Add("java");
            treeView1.ExpandAll();
        }

        private void button2_Click(object sender, EventArgs e)
        {

            if (textBox1.Text == null || textBox1.Text == "")
            {
                MessageBox.Show("请输入文字");
          
                return;
            }
            //添加子节点
            if (treeView1.SelectedNode == null)
            {
                MessageBox.Show("请选择节点");
                return;
            }
                
            else
                treeView1.SelectedNode.Nodes.Add(textBox1.Text);
            textBox1.Text = "";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == null || textBox1.Text == "")
            {
                MessageBox.Show("请输入文字");
                return;
            }
            //添加根节点
            treeView1.Nodes.Add(textBox1.Text);
            textBox1.Text = "";
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //添加兄弟节点
            if (textBox1.Text == null || textBox1.Text == "")
            {
                MessageBox.Show("请输入文字");
                return;
            }
            //添加兄弟节点
            if (treeView1.SelectedNode == null)
                MessageBox.Show("请选择节点");
            else
            {
                treeView1.SelectedNode.Parent.Nodes.Add(textBox1.Text);

            }
            
            textBox1.Text = "";
        }

        private void button4_Click(object sender, EventArgs e)
        {
            DialogResult dr;
            if (treeView1.SelectedNode.Nodes.Count > 0)//当前选定节点有子节点
            {
                dr = MessageBox.Show("该节点有子节点,是否要删除节点: " + treeView1.SelectedNode.Text + "? ", "删除确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dr == DialogResult.Yes)
                    treeView1.Nodes.Remove(treeView1.SelectedNode);
            }
            else
            {
                dr = MessageBox.Show("当前节点无子节点,确认要删除 " + treeView1.SelectedNode.Text + "吗?", "删除确认", MessageBoxButtons.OKCancel);
                if (dr == DialogResult.OK)
                    treeView1.Nodes.Remove(treeView1.SelectedNode);
            }
        }

       private void button5_Click(object sender, EventArgs e)
        {
            //窗体的标题栏
            this.Text = treeView1.SelectedNode.FullPath.ToString();
           
            if (treeView1.SelectedNode.Nodes.Count > 0)
            {//先清空上一次显示的数据
                listBox1.Items.Clear();
                
               
                foreach (TreeNode tn in treeView1.SelectedNode.Nodes)
                    listBox1.Items.Add(tn.Text);
               

            }
            else
                MessageBox.Show("当前节点无子节点!");
        }
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/21120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]java毕业设计四六级考试管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

m基于matlab的wcdma软切换算法的研究分析和仿真

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 软切换是WCDMA系统的关键技术之一&#xff0c;软切换算法和相关参数的设置直接影响着系统的容量和服务质量。通过WCDMA系统的软切换技术可以提高小区覆盖率和系统容量。所以软切换技术是…

【ASM】字节码操作 工具类与常用类 LocalVariablesSorter 类 简单介绍与使用

文章目录 1.概述2. LocalVariablesSorter#2.1 class info2.2 fields3.案例3.1 编码实现3.2 编码实现v21.概述 在上一节:【ASM】字节码操作 工具类与常用类 GeneratorAdapter 介绍 我们知道了对于GeneratorAdapter 类来说,它非常重要的一个特点:将一些visitXxx()方法封装成一…

Java面向对象详解(上)

Java面向对象详解&#xff08;上&#xff09;&#x1fa85;面向对象与面向过程的区分✨面向过程&#xff1a;✨面向对象&#xff1a;&#x1fa85;类是什么&#xff1f;&#x1fa85;对象是什么&#xff1f;&#x1fa85;类的结构&#x1fa85;类中方法&#xff1a;✨成员方法与…

实战讲解SpringBoot启动时自动加载数据库数据到内存:通过回调方法自动运行Bean(图+文+源码)

1 缘起 在补充SpringCloud网关&#xff08;Gateway&#xff09;配置白名单相关知识过程中&#xff0c; 有两种实现方案&#xff1a; &#xff08;1&#xff09;SpringBoot的启动配置文件application.yml进行配置&#xff1b; &#xff08;2&#xff09;自动加载MySQL数据库中的…

【人工智能】Mindspore框架中保存加载模型

前言 MindSpore着重提升易用性并降低AI开发者的开发门槛&#xff0c;MindSpore原生适应每个场景包括端、边缘和云&#xff0c;并能够在按需协同的基础上&#xff0c;通过实现AI算法即代码&#xff0c;使开发态变得更加友好&#xff0c;显著减少模型开发时间&#xff0c;降低模…

深度学习在图像处理中的应用学习笔记

这篇学习笔记用于记录本人在读研期间的学习内容 在刚入学不久&#xff0c;发现一个B站up主对这方面进行了一系列的整理总结&#xff0c;并上传了代码&#xff0c;并且非常成体系&#xff0c;因此本人打算跟着这位up主的步骤&#xff0c;对这方面进行学习并且做一个记录&#xf…

Vue安装并使用axios发送请求

前言 本文主要介绍的是使用在Vue项目中安装并使用axios发送请求 axios介绍 axios是一种Web数据交互方式 它是一个基于promise的网络请求库&#xff0c;作用于node.js和浏览器中&#xff0c;它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中) 本质是对原生XHRX…

NAND Flash原理

Flash 简介 Flash全名叫做Flash Memory&#xff0c;属于非易失性存储设备(Non-volatile Memory Device)&#xff0c;与此相对应的是易失性存储设备(Volatile Memory Device)。关于什么是非易失性/易失性&#xff0c;从名字中就可以看出&#xff0c;非易失性就是不容易丢失&…

BGP→→

BGP-4 提供了一套新的机制以支持无类域间路由。这些机制包括支持网络前缀的通告、取消 BGP 网络中 “ 类 ” 的概念。 BGP-4 也引入机制支持路由聚合&#xff0c;包括 AS 路径的集合。 特点 BGP属于外部或域间路由协议。BGP的主要目标是为处于不同AS中的路由器之间进行路由信…

Spring Cloud Config 配置中心

最简单的配置中心&#xff0c;就是启动一个服务作为服务方&#xff0c;之后各个需要获取配置的服务作为客户端来这个服务方获取配置。 Spring Cloud Config&#xff0c;可以用 git &#xff0c;还可以用数据库、svn、本地文件等作为存储。 1. Config Server 引入 config-ser…

Day08--自定义组件的properties属性

提纲挈领&#xff1a; 1.properties属性 我的操作&#xff1a; 1》 2》 3》输出看看效果是不是真的有接收到。 ********************************* ********************************* ********************************* ********************************* **************…

Spring 源码阅读

1. beanFactory The root interface for accessing a Spring bean container. 2. BeanFactoryPostProcessor 对bean定义进行后置处理&#xff0c;比如jdbc类读取配置的密码&#xff0c;用户名等。 3.BeanPostProcessor public interface BeanPostProcessor {Object postProce…

ctfshow--RCE极限挑战

本周ctfshow的挑战注重点为RCE&#xff0c;主要利用是&#xff1a;自增绕过RCE RCE挑战1 属于简单类型 源码 error_reporting(0); highlight_file(__FILE__); $code $_POST[code]; $code str_replace("(","括号",$code); $code str_replace(".&q…

Arcgis使用教程(十一)ARCGIS地图制图之经纬网格设置参数详解

Arcgis地图制图中&#xff0c;经纬网格的添加详细参见&#xff1a; Arcgis使用教程&#xff08;十&#xff09;ARCGIS地图制图之经纬网格添加_空中旋转篮球的博客-CSDN博客 1.加载数据 在Arcmap中加载中国矢量图层数据&#xff08;中国省级行政区图&#xff0c;国界线两个图层…

善于使用二阶思维

事情往往不是你想象的那样&#xff0c;有时候&#xff0c;看似解决了问题&#xff0c;却在不经意间&#xff0c;引发了更严重的后果。帮助我们思考、决策、解决问题的最有效方法是&#xff0c;运用二阶思维。 什么是二阶思维&#xff1f; 一阶思维是单纯而肤浅的&#xff0c;几…

34.nacos客户端读取共享配置文件实例(springcloud)

其他配置环境和上文相同&#xff0c;本实例不再演示 https://blog.csdn.net/weixin_59334478/article/details/127953755?spm1001.2014.3001.5501https://blog.csdn.net/weixin_59334478/article/details/127953755?spm1001.2014.3001.55011.新建共享配置文件&#xff0c;使…

高NA (数值孔径)物镜的分析

高NA(数值孔径)物镜常用于光学显微及光刻&#xff0c;并已广泛在其他应用中得以使用。众所周知&#xff0c;在高数值孔径物镜的使用中&#xff0c;电磁场矢量特性的影响是不可忽略的。一个众所周知的例子就是由高NA(数值孔径)物镜聚焦线性偏振圆光束时&#xff0c;焦斑的不对称…

过控Matlab-实验法建立被控过程的数学模型(一)

太原理工大学过程控制实验之实验法建立被控过程的数学模型 过控Matlab实验法建立被控过程的数学模型实验内容1.利用MATLAB根据作图法建立系统的一阶惯性环节加纯迟延的近似数学模型。2.利用MATLAB根据计算法建立系统的一阶惯性环节加纯迟延的近似数学模型。3.利用MATLAB根据计算…

[附源码]计算机毕业设计JAVA基于JSP社区生鲜配送系统

[附源码]计算机毕业设计JAVA基于JSP社区生鲜配送系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM …