自学内容网 自学内容网

Winfrom 基础控件二

一、图片框PictureBox控件

用于在窗体的指定位置显示图片,其为不可编辑的控件,无法获得焦点。

图片框PictureBox的常用属件

属性

说明

Imgae

用于设置显示在图片框控件上的图像

ImageLokation

用于设置显示在图片框控件上的图像的路径,路径文件不存在时,图片消失

SizeMode

用于设置图像位置和控件大小

其中SizeMode属性包含5个属性值

属性值

说明

Normal

图像被置于PictureBox的左上角。如果图像比包含它的PictureBox大,则该图像将被裁剪掉。

Stretchlmage

PictureBox中的图像被拉伸或收缩,以适应PictureBox的大小。

AutoSize

自动调整PictureBox的大小,使其等于所包含的图像大小。

Centerlmage

如果PictureBox比图像大,则图像将居中显示。如果PictureBox比比图像小,则图像将居中显示并裁剪掉超出的部分。

Zoom

图像大小按其原有的长宽比例被等比例放大或缩小。PictureBox可能会有留白

二、图片集lmageList控件

思考:PictureBox控件中只能存储一张图片,如果需要对多张图片进行展示,如何存储多张图片?

我们可以使用图片集lmageList控件,,用于存储多个图像资源,是一个图像集,通过索引访问图像集中的图片。

ImageList控件的常用属性:

属性

说明

lmages

存储在控件中的图像集合

lmageSize

图像集中图像的大小,最大值为256*256

ColorDepth

图像集中图像的颜色深度,数值越高图片质量越好

注意:

(1)图像资源存储于lmages属性中,它是一个图片集合

(2)图片集中的图像可通过其索引值或其键值进行访问。 imageList1.Images[0];

(3)所有图像都将以相同大小显示,由lmageSize属性设置。

案例:使用lmageList控件制作图片查看器

lmageList存储图片

PictureBox控件显示图片

button按钮切换图片

    int imgIdex = 0;

    private void Form2_Load(object sender, EventArgs e)

    {   //窗口加载时显示第一张图片

        this.pictureBox1.Image = this.imageList1.Images[0];

        this.button1.Enabled = false;



    }

    private void button1_Click(object sender, EventArgs e)

    { //上一张

        imgIdex--;         

        this.pictureBox1.Image = this.imageList1.Images[imgIdex];

        setButton();

    }

    private void button2_Click(object sender, EventArgs e)

    {//下一张

        imgIdex++;        

        this.pictureBox1.Image = this.imageList1.Images[imgIdex];

        setButton();

    }



    private void setButton()

    {

        this.button1.Enabled = true;

        this.button2.Enabled = true;

        if (imgIdex == 0)

        {

            this.button1.Enabled = false;

        }

        if (imgIdex == imageList1.Images.Count-1)

        {

            this.button2.Enabled = false;

        }

    }

}

 

三、计时器Timer控件

按用户定义的时间间隔引发事件的控件,程序每隔一定时间重复执行一个操作。

Timer控件的常用属件、方法和事件:

属性

说明

Interval

事件发生的间隔(频率),以毫秒为单位

Enable

设置计时器是否启用,布尔类型

方法

说明

Start()

启动计时器

Stop()

停止计时器

事件

说明

Tick

定时间隔到,自动引发的事件,重复发生的事情代码

案例:使用Timer控件制作电子时钟

四、系统托盘Notifylcon控件

软件启动后会在系统右下角创建一个小图标,称为系统托盘,当软件在后台运行时,可以通过系统托盘对软件进行相关操作。

四、系统托盘Notifylcon控件

软件启动后会在系统右下角创建一个小图标,称为系统托盘,当软件在后台运行时,可以通过系统托盘对软件进行相关操作。

Notifylcon控件的常用属性:

属性

说明

lcon

将在系统栏中显示的图标,必须为ico格式文件

Text

当鼠标悬停在图标上时,显示的文本

ContextMenuScript

与系统托盘图标相关联的右键快捷菜单

为之前的程序添加系统托盘

树型控件TreeView
一、树型控件TreeView概述 :

(1)用于显示具有层次结构的数据

(2)由层叠的节点(Node)分支构成,每个节点由图像和标签组成

(3)每个TreeView控件均包含一个或多个根节点,根节点下面包含多个子节点,子节点下面还可以包含子节点(4)包含子节点的节点可以展开或折叠

TreeView控件的常用属性:

属性

说明

Name

获取或设置控件的名称

Dock

控件在父容器中的停靠方式

Nodes

TreeView控件根节点集合

SelectedNode

获取或设置当前TreeView控件中选定的树节点

lmageList

获取或设置TreeView中所使用的图像集,关联lmageList控件

Imagelndex

获取或设置树节点显示的图像在lmageList图像集中的索引

Selectedlmgelndex

获取或设置节点被选中时显示的图像在lmageList图像集中的索引

方法

说明

ExpandAll()

展开所有树节点

TreeView控件的常用事件:

事件

说明

AfterCollapse

在折叠树节点后触发

AfterExpand

在展开树节点后触发

AfterSelect

在更改选中节点后触发

Click

在点击TreeView控件时触发

注意

对TreeView控件的操作,其本质是对树节点的操作。

无论是根节点,还是子节点都是TreeNode对象

二、添加、删除树节点:

示例:使用TreeView展示学校的专业以及专业下的课程。

添加树节点有两种方式实现:

(1)在TreeNode编辑器中添加、删除树节点

(2)通过代码添加、删除树节点

使用TreeNode编辑器添加删除树节点操作步骤:

实现步骤:

(1)添加窗体"TreeViewForm",并向其中拖入TreeView控件

(2)选中TreeView控件,点击右上角的小三角图标,弹出快捷菜单。

(3)点击“编辑节点",打开“TreeNode编辑器”,按层级关系添加树节点,同时也可以删除树节点通过代码添加树节点:

实现步骤:

(1)创建窗体,向其中拖入TreeView控件。

(2)设置TreeView在父容器中停靠,name属性为tv_tencent

(3)为窗体添加Load事件,在事件处理函数中编码添加树节点,描述腾讯公司管理团队成员的信息,   

 private void Form2_Load(object sender, EventArgs e)

    {

        #region  通过实例创建treeView节点

          //创建根节点

         TreeNode root = new TreeNode("中南林涉外学院");

         root.Name = "s1";   

         this.treeView1.Nodes.Add(root); //添加根节点附加到控件上

         //创建专业节点

         TreeNode zy1 = new TreeNode("软件工程");

         zy1.Name = "z1";

         TreeNode zy2 = new TreeNode("电子信息");

         zy2.Name = "z2";

         //专业节点附加根节点

         root.Nodes.Add(zy1);

         root.Nodes.Add(zy2);

         //创建课程节点

         TreeNode Course1 = new TreeNode("C#");

         Course1.Name = "C#";

         TreeNode Course2 = new TreeNode("Java");

         Course2.Name = "Java";

         TreeNode Course3 = new TreeNode("数电");

         TreeNode Course4 = new TreeNode("模电");

         //课程节点附加到专业节点

         zy1.Nodes.Add(Course1);

         zy1.Nodes.Add(Course2);

         zy2.Nodes.Add(Course3);

         zy2.Nodes.Add(Course4);

         //所有节点展开

         this.treeView1.ExpandAll();



        //通过节点对象删除

        this.treeView1.Nodes .Remove(Course1);

        //通过节点下标删除

        this.treeView1.Nodes[0].Nodes[0].Nodes.RemoveAt(1);

        //通过键  name属性 删除

        this.treeView1.Nodes["s1"].Nodes["z1"].Nodes.RemoveByKey("C#");



        #endregion

        //*********************************************************************************************************************       





        #region 通过键值对创建treeView节点

        this.treeView1.Nodes.Add("001", "中南林涉外学院");

        this.treeView1.Nodes["001"].Nodes.Add("001001", "软件工程");

        this.treeView1.Nodes["001"].Nodes.Add("001002", "电子信息");



        this.treeView1.Nodes["001"].Nodes["001001"].Nodes.Add("001001001", "C#");

        this.treeView1.Nodes["001"].Nodes["001001"].Nodes.Add("001001002", "Java");



        this.treeView1.Nodes["001"].Nodes["001002"].Nodes.Add("001002001", "数电");

        this.treeView1.Nodes["001"].Nodes["001002"].Nodes.Add("001002002", "模电");



        //通过键删除节点

        this.treeView1.Nodes["001"].Nodes["001002"].Nodes.RemoveByKey("001002002");

        #endregion


    }

}

三、管理节点图标

需要在TreeView的节点中使用图标,我们需要借助lmageList控件,所以我们首先需要做如下操作:

(1)向窗体中添加lmageList控件,向lmageList控件中添加需要的图片。

(2)将lmageList控件与TreeView控件进行关联,即设置TreeView控件的lmageList属性。

给节点设置图标有两种情况:

(1)所有节点图标都一样:

此时直接在属性栏中或者通过代码找到TreeView控件,

设置Imagelndex属性和Selectedlmagelndex属性指定图片在lmageList中的索引标号,

来设置所有节点正常情况和选中情况下的图片索引。

(2)节点的图标不一致:

【1】通过编辑器添加的节点,直接在编辑中为每个节点设置|magelndex属性和Selectedlmagelndex属性,

【2】通过代码,使用TreeNode对象添加的节点,在代码中为每个TreeNode设置lmagelndex属性和Selectedlmagelndex属性。

四、响应事件,获取选中节点

为TreeView控件添加AfterSelect事件,节点被选中后触发,在事件处理函数中

获取选中节点,并提示其标签文本值和key。

列表视图ListView

展示数据

属性

说明

Name

控件的名称

Dock

控件在父容器中的停靠方式

ltems

包含控件中所有项的集合

Columns

控件中显示的所有列标题的集合

View

控件的显示视图

LargelmageList

当控件以大图标视图显示时使用的ImageList

SmalllmageList

当控件以小图标视图显示时使用的ImageList

GridLines

在包合控件中的行和列之间是否显示网格线

MultiSelect

是否可以选择多项

Selectedltems

获取在控件选定的项

FullRowSelect

单击某项是否选择其所有子项/ 整行选中

ListView控件的常用方法:

方法

说明

Clear

从控件中移除所有项和列,清空ListView

ListView控件的常用事件:

事件

说明

Click

在单击ListView控件时触发

SelectedIndexChanged

当选定项发生更改时触发

image.png

ListView的结构:

(1)ListView控件可以展示多项数据,ltems属性表示所有项的集合。

(2)其中每一项均为ListViewltem对象。

(3)每个ListViewltem对象中包含Subltems属性表示该项中所有子项的集合

(4)其中每个子项均为ListViewsubltem对象。

给ListView添加删除项目

示例:使用ListView控件展示游戏人物的信息!

采用两种方法分别实现此功能

(1)使用ListViewltem集合编辑器添加,删除项。

(2)使用代码为ListViewltem添加,删除项。

使用ListViewltem集合编辑器添加,删除项

特别注意:如果ListView与lmageList关联,ListView的Detail视图中的行高会随着小图标视图的lmagelist的图像高度而改变。而且取消与lmageList的关联后也无法还原,此时可以通过设置|mageList的图像大小来控制行高。

使用代码为ListViewltem添加项:

实现步骤:

(1)创建窗体,并向其中拖入ListView控件

(2)设置ListView控件的Dock属性在父容器中停靠,name属性为IvTimi。

(3)向ListView控件中添加列(点击右上角三角,编辑列)。

(4)设置ListView控件的显示视图为Detail,此时可以看到列标题。

(5)在窗体加载时,编写代码为ListView添加项。 需要先通过编辑器绑定图片集 

   private void Form3_Load(object sender, EventArgs e)

    {   //编写代码为ListView添加项
        ListViewItem listViewItem = new ListViewItem("云中君");

        listViewItem.SubItems.Add("强");

        listViewItem.SubItems.Add("强");

        listViewItem.SubItems.Add("强");

        listViewItem.SubItems.Add("强");

        //需要先通过编辑器绑定图片集
        listViewItem.ImageIndex = 0;

      

        this.listView1.Items.Add(listViewItem); //为listView1添加项



        ListViewItem listViewItem1 = new ListViewItem("猪八戒");

        listViewItem1.Name = "zbj";

        listViewItem1.SubItems.Add("强");

        listViewItem1.SubItems.Add("强");

        listViewItem1.SubItems.Add("强");

        listViewItem1.SubItems.Add("强");

        //需要先通过编辑器绑定图片集
        listViewItem1.ImageIndex = 1;

                   

        this.listView1.Items.Add(listViewItem1);



  //为listView1添加项

    }

}

删除项代码

         //直接通过对象名进行删除
        this.listView1.Items.Remove(listViewItem);

        //直接通过索引下标进行删除
        this.listView1.Items.RemoveAt(0);

        //通过键值对进行删除  键就是listViewItem 的name属性
        this.listView1.Items.RemoveByKey("zbj");

 

二、响应事件,获取选中项目内容

设置FullRowSelect属性为true,保证单击某项整行选中效果,

选择ListView控件的DoubleClick(双击)事件,编写如下代码:

private void listView1_DoubleClick(object sender, EventArgs e)

{

    ListViewItem items = this.listView1.SelectedItems[0];

    if (items != null)

    {

        string msg = "";

        msg += "名字" + items.Text + "\n";

        msg += "生命值" + items.SubItems[1].Text + "\n"; ;//items.SubItems[1] ,SubItems从1开始

        msg += "攻击力" + items.SubItems[2].Text + "\n"; ;

        msg += "职业" + items.SubItems[3].Text + "\n"; ;

        msg += "上手难度" + items.SubItems[4].Text + "\n"; ;

        MessageBox.Show(msg);

    }

   

}

三、结合右键实现删除以及视图切换

拖入ConTextMenuStrip控件,制作如下菜单,

并设置ListView控件的ContextMenuStrip属性用来关联ListView控件和ContextMenuStrip控件:

删除菜单响应代码

private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)

{   //判断SelectedItems是否为空,空集合未选择 直接return

    if (this.listView1.SelectedItems.Count == 0)

    {

        MessageBox.Show("未选择选项,请重新选择");

        return;

    } //获取被选择的项

    ListViewItem listViewItem = this.listView1.SelectedItems[0];

    this.listView1.Items.Remove(listViewItem);

}

各种视图菜单响应代码

private void 大视图ToolStripMenuItem_Click(object sender, EventArgs e)

{    //修改view属性修改视图样式

    this.listView1.View = View.LargeIcon;

}

private void 小视图ToolStripMenuItem_Click(object sender, EventArgs e)

{   //修改view属性修改视图样式

    this.listView1.View = View.SmallIcon;

}

private void 平铺ToolStripMenuItem_Click(object sender, EventArgs e)

{   //修改view属性修改视图样式

    this.listView1.View = View.Details;

}

 


原文地址:https://blog.csdn.net/gjw3037109961/article/details/144423771

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!