C# ImageList控件学习

举报
IC00 发表于 2022/09/20 22:39:19 2022/09/20
【摘要】 今天我们来学习一下ImageList这个控件,这个控件需要和ListView或者treeView联合使用,主要是因为它是一个image图片的集合,但是它一般都作为一个图标集去使用,我们导入我们想要的图标,然后给指定的图标给我们的一些集合,ImageList 通常由其他控件(例如 ListView, TreeView或 ToolBar)使用。

前言:

今天我们来学习一下ImageList这个控件,这个控件需要和ListView或者treeView联合使用,主要是因为它是一个image图片的集合,但是它一般都作为一个图标集去使用,我们导入我们想要的图标,然后给指定的图标给我们的一些集合,ImageList 通常由其他控件(例如 ListView, TreeView或 ToolBar)使用。 你可以向 ImageList该控件添加位图或图标,而其他控件可以根据需要使用图像。ImageList 使用句柄来管理映像列表。 Handle在图像列表中执行某些操作(如获取Handle或调用Draw)之前,不会创建该操作。 执行其他操作,例如设置 ColorDepth 或 ImageSize 将导致 Handle 重新创建。 因此,在将图像添加到其中 ImageList之前,应执行这些操作。 此外,处理将本地化的表单时,应始终在窗体的语言属性设置为“默认”时添加 ImageList 和图像。 在添加图像之前更改窗体的语言会损坏应用程序资源文件,emmm,创作不易,点赞关注评论收藏。

一、ImageList属性

CanRaiseEvents 获取一个指示组件是否可以引发事件的值。(继承自 Component)
ColorDepth 获取图像列表的颜色深度。
Container 获取包含 IContainer 的 Component。(继承自 Component)
DesignMode 获取一个值,用以指示 Component 当前是否处于设计模式。(继承自 Component)
Events 获取附加到此 Component 的事件处理程序的列表。(继承自 Component)
Handle 获取图像列表对象的句柄。
HandleCreated 获取一个值,该值指示是否已创建基础 Win32 句柄。
Images 获取此图像列表的 ImageList.ImageCollection。
ImageSize 获取或设置图像列表中的图像大小。
ImageStream 获取与此图像列表关联的 ImageListStreamer。
Site 获取或设置 Component 的 ISite。(继承自 Component)
Tag 获取或设置包含有关 ImageList的其他数据的对象。
TransparentColor 获取或设置被视为透明的颜色。

二、ImageList方法

CreateObjRef(Type) 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。(继承自 MarshalByRefObject)
Dispose() 释放由 Component使用的所有资源。(继承自 Component)
Dispose(Boolean) 释放由 Component占用的非托管资源,还可以另外再释放托管资源。(继承自 Component)
Draw(Graphics, Int32, Int32, Int32) 在指定 Graphics 上的指定位置绘制给定索引所指示的图像。
Draw(Graphics, Int32, Int32, Int32, Int32, Int32) 使用指定的位置和大小绘制由指定的Graphics) 的给定索引所指示的图像。
Draw(Graphics, Point, Int32) 在指定 Graphics 上的给定位置绘制指定索引所指示的图像。
Equals(Object) 确定指定对象是否等于当前对象。(继承自 Object)
GetHashCode() 作为默认哈希函数。(继承自 Object)
GetLifetimeService() 检索控制此实例的生存期策略的当前生存期服务对象。(继承自 MarshalByRefObject
GetService(Type) 返回一个对象,该对象表示由 Component或它的 Container 提供的服务。(继承自 Component)
GetType() 获取当前实例的 Type。(继承自 Object)
InitializeLifetimeService() 获取生存期服务对象来控制此实例的生存期策略。(继承自 MarshalByRefObject)
MemberwiseClone() 创建当前 Object的浅表副本。(继承自 [Object])
MemberwiseClone(Boolean) 创建当前 MarshalByRefObject对象的浅表副本。(继承自 MarshalByRefObject
ToString() 返回表示当前 ImageList 的字符串。

三、导入ImageList控件,使用步骤

从工具箱中的拖出ImageList,然后需要和其他的控件联合使用,在其他控件中的imagelist中添加我们导入的imagelist这样才能去选择我们的图片或者图标。

image.png
image.png
image-20211114171622416
image.png
image.png

四、在treeView中使用ImageList

我们联合treeView控件,在TreeView的节点添加图标,图标的导入就是ImageList,绑定好之后就可以选择我们想要的图标。

image.png

代码逻辑

代码只是我们之前对treeView的代码逻辑,只是我们这次是详细简述ImageList控件的使用,不是很难,相信大家应该也学会了,哈哈哈。

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;
​
namespace TreeTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }private void button1_Click(object sender, EventArgs e)
        {
            TreeNode treeNode = new TreeNode(textBox1.Text, 2, 2);
            treeView1.Nodes.Add(treeNode);
            treeView1.Select();
        }private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {}private void button2_Click(object sender, EventArgs e)
        {
            TreeNode selectdnode = treeView1.SelectedNode;
            if(selectdnode!=null)
            {
                TreeNode chnode = new TreeNode(textBox2.Text, 2, 2);
                selectdnode.Nodes.Add(chnode);
                selectdnode.Expand();
                treeView1.Select();
            }
            else
            {
                MessageBox.Show("请选择需要添加子节点");
            }
        }private void button3_Click(object sender, EventArgs e)
        {
            TreeNode selectnode = treeView1.SelectedNode;
            TreeNode parentnode = selectnode.Parent; 
            if(parentnode == null)
            {
                treeView1.Nodes.Remove(selectnode);
            }
            else
            {
                parentnode.Nodes.Remove(selectnode);
            }
            treeView1.Select();
        }private void button4_Click(object sender, EventArgs e)
        {
            treeView1.Nodes.Clear();
        }private void button5_Click(object sender, EventArgs e)
        {
            this.textBox1.Clear();
            this.textBox2.Clear();
        }
    }
}

总结:

这篇文章比较简单,只是简单的学习一下,对它有更多的认识,在有需求的时候最起码有路子,虽然很简单,但是也是可以学到东西的,我们学习了新的知识,对我们的知识储备及技术又有新的一点点的进步,C#的技术就是先简单再难嘛,积少成多之后才会成长才会进步,我们要不断的学习不断的探索,才能有学习的动力,才会有学习的欲望,创作不易,点赞评论收藏关注,嘿嘿,不喜勿喷!!!!

20190724912442_FIJlny.jpg

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。