保姆级跟学VISualstudio窗体画面制作教程

C#学习之旅(二)
文章目录
C#学习之旅(二)
1、Windows窗体
1.1、From窗体
1.1.1、Form窗体概念
1.1.2、新建一个Windows窗体应用程序
1.1.3、添加和删除窗体
1.1.4、多窗体的使用
1.1.5、窗体的属性
1.1.6、窗体的显示与隐藏
1.1.7、窗体的事件
1.2、MDI窗体
1.2.1、MDI窗体的概念
1.2.2、如何设置MDI窗体
1.2.3、排列MDI子窗体
1.3、继承窗体
1.3.1、继承窗体的概念
1.3.2、创建继承窗体
1.3.3、在继承窗体中修改继承的控件属性
2、Windows应用程序常用控件
2.1、控件概述
2.1.1、控件的分类及作用
2.1.2、控件命名规范
2.2、控件的相关操作
2.2.1、添加控件
2.2.2、对齐控件
2.2.3、锁定控件
2.2.4、删除控件
2.3、文本类控件
2.3.1、标签控件(Label控件)
2.3.2、按钮控件(Button控件)
2.3.3、文本框控件(TextBox控件)
2.3.4、有格式文本控件(RichTextBox控件)
2.4、选择类控件
2.4.1、下拉组合框控件(ComboBox控件)
2.4.2、复选框控件(CheckBox控件)
2.4.3、单选按钮控件(RadioButton控件)
2.4.3、数值选择控件(NumericUpDown控件)
2.4.3、列表控件(ListBox控件)
2.5、分组类控件
2.5.1、容器控件(Panel控件)
2.5.2、分组框控件(GroupBox控件)
2.5.3、选项卡控件(TabControl控件)
2.6、菜单、工具栏和状态栏控件
2.6.1、菜单控件(MenuStrip控件)
2.6.2、工具栏控件(ToolStrip控件)
2.6.3、状态栏控件(StatusStrip控件)
3、Windows应用程序高级控件
3.1、ImageList控件(存储图像控件)
3.1.1、在ImageList控件中添加图像
3.1.2、在ImageList控件中移除图像
3.2、ListView控件(列表视图控件)
3.2.1、在ListView控件中添加移除项
3.2.2、选择ListView控件中的项
3.2.3、为ListView控件中的项添加图标
3.2.4、在ListView控件中启动平布视图
3.2.5、为ListView控件中的项分组
3.3、TreeView控件(树控件)
3.3.1、添加或删除树节点
3.3.2、获取树控件中选中的节点
3.3.3、为树控件中的节点设置图标
3.4、DataTimePicker控件(日期控件)
3.4.1、使用DateTimePicker控件显示时间
3.4.2、使用DateTimePicker控件自定义格式显示日期
3.4.3、返回DateTimePicker控件中选择的日期
3.5、MonthCalendar控件(月历控件)
3.5.1、更改MonthCalendar控件的外观
3.5.2、在MonthCalendar控件中显示多个月份
3.5.3、在MonthCalendar控件中选择日期范围
3.6、其他高级控件
3.6.1、使用ErrorProvider控件验证文本框输入
3.6.2、使用HelpProvider控件调用帮助文件
3.6.3、使用Timer控件设置时间间隔
3.6.4、使用ProgressBar控件显示程序运行进度条
1、Windows窗体
1.1、From窗体
1.1.1、Form窗体概念
在Windows中,窗体是向用户显示信息的可视图面,窗体是Windows应用程序的基本单元。窗体都具有自己的特征,可以通过编程来设置。窗体也是对象,窗体类定义了生成窗体的模板,每实例化一个窗体类,就产生一个窗体。.NET框架类库的System.Windows.Forms命名控件中定义的Form类是所有窗体类的基类。编写窗体应用程序时,首先需要设计窗体的外观和在窗体中添加控件或组件。虽然可以通过编写代码来实现,但是却不直观,也不方便,而且很难精确地控制界面。如果要编写窗体应用程序,推荐使用Visual Studio 2017。Visual Studio 2017提供了一个图形化的可视化窗体设计器,可以实现所见即所得的设计效果,可以快速开发窗体应用程序。

    1.1.2、新建一个Windows窗体应用程序
    (1)、在Windows操作系统的"开始"菜单界面中找到Visual Studio 2017,单击打开。
    (2)、选择Visual Studio 2017工具栏中的"文件"->“新建”->"项目"命令,打开"新建项目"对话框。
    (3)、选择 Windows窗体应用(.NET Framework) Visual C# 选项,指定命名名称,选择保存路径,然后单击"确认"按钮创建一个 Windows窗体应用程序。



    1.1.3、添加和删除窗体
    (1)、如果要向项目中添加一个新窗体,可以在项目名称上右击,在弹出的快捷菜单中选择“添加”->“Windows窗体”或者“添加”->“新建项”->“Windows窗体”。
    (2)、若要删除窗体,只需在要删除的窗体名称上点击右击,在弹出的快捷菜单中选择“删除”命令,即可将窗体删除。
    注意:
    (1)、在设置窗体的名称时,不要用关键字进行设置。

    1.1.4、多窗体的使用
    (1)、一个完整的Windows应用程序是由多个窗体组成,此时,就需要对多窗体设计有所了解。多窗体即是向项目中添加多个窗体,在这些窗体中实现不同的功能。
    (2)、多窗体的建立


    (3)、在添加了多个窗体之后,如果要调试程序,必须要设置先运行窗体。这样就需要设置项目的启动窗体。项目的启动窗体是在Program.cs文件中设置的,在Program.cs文件中改变Run()方法的参数,即可实现设置启动窗体。

    1.1.5、窗体的属性
    (1)、更换窗体的图标:选中窗体,然后在窗体的“属性”面板中选中Icon属性,更换窗体的图标。
    (2)、隐藏窗体的标题栏:通过设置窗体的FormBorderStyle 属性为None,即可隐藏窗体的标题栏。

    (FormBorderStyle属性的属性值及说明)

    (3)、控制窗体的显示位置:可以通过窗体的StartPosition属性,设置加载窗体时窗体在显示器中的位置。

    (StartPosition属性的属性值及说明)

    (4)、修改窗体的大小:通过Size属性设置窗体的大小。
    (5)、设置图像背景的窗体:选中窗体“属性”面板中的BackgroundImage属性,即可设置窗体背景图像。

    1.1.6、窗体的显示与隐藏
    (1)、窗体的显示


    (2)、窗体的隐藏



    1.1.7、窗体的事件
    (1)、windows是事件驱动的操作系统,对Form类的任何交互都是基于事件来实现的。Form类提供了大量的事件用于响应对窗体执行的各种操作。
    Click(单击)事件:当单击窗体时,将会触发窗体的Click事件。语法:public event EventHandler Click。
    Load(加载)事件:窗体加载时,将触发窗体的Load事件。语法:public event EventHandler Load。
    FormClosing(关闭)事件:窗体关闭时,触发窗体的FormClosing事件。语法:public event FormClosingEventHandler FormClosing。



    1.2、MDI窗体
    1.2.1、MDI窗体的概念
    多文档界面(Multiple-Document Interface)简称MDI窗体。MDI窗体用于同时显示多个文档,每个文档显示在各自的窗口中。MDI窗体中通常有包含子菜单的窗口菜单,用于在窗口或文档之间进行切换。MDI窗体十分常见。

    1.2.2、如何设置MDI窗体
    (1)、在MDI窗体中,起到容器作用的窗体被称为“父窗体”,可放在父窗体中的其他窗体被称为“子窗体”,也称为“MDI子窗体”。
    设置父窗体:如果要将某个窗体设置为父窗体,只要在窗体的属性面板中,将IsMdiContainer属性设置为True即可。
    设置子窗体:设置完父窗体,通过设置某个窗体的MdiParent属性来确定子窗体。语法:public Form MdiParent{get;set;}。





    1.2.3、排列MDI子窗体
    (1)、通过使用带有MdiLayout枚举的LayoutMdi方法来排列多文档界面父窗体中的子窗体。
    语法:
        public void LayoutMdi (MdiLayout value)
        value:是MdiLayout枚举值之一,用来定义MDI子窗体的布局。
        MdiLayout枚举用于指定MDI父窗体中子窗体的布局。
    语法:
        public enum MdiLayout

                    MdiLayout的枚举成员及说明。



    1.3、继承窗体
    1.3.1、继承窗体的概念
    继承窗体就是根据现有窗体的结构创建一个与其一样的新窗体,这种从现有窗体继承的过程称为可视化继承。在某种情况下,项目可能需要一个与在以前的项目中创建的窗体类似的窗体。或者希望创建一个基本窗体,其中含有随后将在项目中再次使用的控件布局之类的设置,每次重复使用时,都会对该原始窗体模板进行修改。这时,就需要创建继承窗体。通过从基窗体继承,来创建新Windows窗体是重复最佳工作成果的快捷方法,而不必每次需要窗体时都重新创建一个。为了从一个窗体继承,包含该窗体的文件或命名空间必须已编译成可执行文件或DLL(动态链接库文件)。

    1.3.2、创建继承窗体
    (1)、创建继承窗体的方法有两种:一种是通过编程方式创建继承窗体,另一种是使用继承选择器创建继承窗体。
    ①、以编程方式创建继承窗体时,主要是在类定义中将引用添加到要从其继承的窗体。引用应包含该窗体的命名空间,后面跟一个句点,然后是基窗体本身的名称。




            ②、 继承窗体或其他对象的最简便方法是使用“继承选择器”对话框。通过该对话框,就可利用已经在其他解决方案中创建的代码或用户界面。为了使用“继承选择器”对话框从某个窗体继承,包含该窗体的项目必须已经生成为可执行文件或DLL。若要生成项目,可以选择“生成”菜单中的“生成解决方案”命令。下面介绍如何使用继承选择器创建继承窗体。
    1、在“解决方案资源管理器”面板的项目名称上右击,在弹出的快捷菜单中选择“添加”—>“新建项”命令,打开“添加新项”对话框。
    2、从“添加新项”对话框中选择“继承的窗体”后,单击“添加按钮”,打开“继承选择器”对话框。
    3、从“继承选择器”对话框中选择添加的继承窗体的基窗体后,单击“确定”按钮,完成继承窗体的添加。



    1.3.3、在继承窗体中修改继承的控件属性
    (1)、在向窗体中添加控件时,其Modifiers属性默认为private。因此,如果继承这样的窗体,在继承窗体中,控件的属性全部为不可编辑状态。如果希望在继承窗体中编辑各个控件的属性,首先要将基窗体中控件的Modifiers属性全部设置为public。

2、Windows应用程序常用控件
2.1、控件概述
窗口是由控件有机构成的,所以熟悉控件是进行合理、有效的程序开发的重要前提。在Windows应用程序中控件分为常用控件和高级控件。

    2.1.1、控件的分类及作用
    (1)、Windows应用程序控件的基类是位于System.Windows.Forms命名空间的Control类。Control类定义了空间类的共同属性、方法和事件,其他的控件类都直接或间接地派生这个基类。


    2.1.2、控件命名规范
    (1)、在使用控件的过程中,可以通过控件默认的名称调用。如果自定义控件名称,就要遵循控件的命名规范。

    2.2、控件的相关操作
    对控件的相关操作包括添加控件,对齐控件、锁定控件和删除控件等。

    2.2.1、添加控件
    (1)、在窗体上绘制控件:在工具箱中单击要添加到窗体的控件,然后在该窗体上单击希望控件左上角所处的位置,然后拖拽到希该控件右下角所处位置,控件即按指定的位置和大小添加到窗体中。
    (2)、将控件拖拽到窗体上:在工具箱中单击所需的控件并将其拖拽到窗体上,控件以其默认大小添加到窗体上的指定位置。
    (3)、以编程方式向窗体添加控件:通过new关键字实例化要添加的控件所在的类,然后将实例化的控件添加到窗体中。



    2.2.2、对齐控件
    (1)、选定一组控件,这些控件需要对齐。在执行之前,首先选定主导控件(首先选定的控件就要主导控件)。控件组的最终位置取决于主导控件的位置,在选择菜单栏中的“格式”—>“对齐”命令,然后选择对齐方式。



    2.2.3、锁定控件
    (1)、在控件的“属性”窗口中,单击Locked属性并选择true。此外,还可以右击控件并选择“锁定控件”命令。如果要锁定窗体上的所有控件,可以选择菜单栏中的“格式”/“锁定控件”命令。

    2.2.4、删除控件
    (1)、删除控件的方法非常简单,可以在控件上单击鼠标右键,在弹出的快捷菜单中选择“删除”命令进行删除。或者选中控件,然后按下Delete键。但请注意,当该控件在代码中存在相关事件或属性时,在删除控件后,需要将代码中相关的事件或属性一并删除。

    2.3、文本类控件
    文本类控件主要包括标签控件(Label控件)、按钮控件(Button控件)、文本框控件(TextBox控件)和有格式文本控件(RichTextBox控件)。

    2.3.1、标签控件(Label控件)
    (1)、标签控件(Label控件)主要用于显示用户不能编辑的文本,标识窗体上的对象(例如,给文本框、列表框等添加描述信息)。
    (2)、设置标签文本:在标签控件(Label控件)的属性面板中设置Text属性。(凡是在属性面板中设置的属性都可通过代码来实现)
    (3)、显示/隐藏控件:通过设置Visible属性来设置显示/隐藏标签控件(Label控件),如果Visible属性的值为true,则显示控件,如果Visible属性的值为false,则隐藏控件。

    2.3.2、按钮控件(Button控件)
    (1)、按钮控件(Button控件)允许用户通过单击来执行操作。按钮控件(Button控件)既可以显示文本,也可以显示图像。当该控件被单击时,先被按下,然后被释放。
    (2)、响应按钮的单击事件:点击按钮(Button控件)时将引发Click事件,执行Click事件中的代码。
    (3)、将按钮设置为窗体的“接受”按钮:通过设置窗体的AcceptButton属性,可以设置窗体的“接受”按钮。如果设置了此按钮,用户每次按下Enter键都相当于单击该按钮。


    (4)、将按钮设置为窗体“取消”按钮:通过设置窗体的CancelButton属性,可以设置窗体的“取消”按钮。如果设置该属性,则每次用户按下Esc键都相当于单击了该按钮。



    2.3.3、文本框控件(TextBox控件)
    (1)、文本框控件(TextBox控件)用于获取用户输入的数据或者显示文本。文本框控件(TextBox控件)通常用于可编辑文本,也可以使其成为只读控件。文本框可以显示多个行,对文本换行使其符合控件的大小。
    (2)、创建只读文本框:通过设置文本框(TextBox控件)的ReadOnly属性,可以设置文本框是否为只读。如果ReadOnly属性为true,那么不能编辑文本框,而只能通过文本框显示数据。


    (3)、创建密码文本框:通过设置文本框的PasswordChar属性或者UseSystemPasswordChar属性可以将文本框设置成密码文本框,使用PasswordChar属性可以设置在文本框中显示密码的字符(例如,将密码显示为“*”或“#”等);如果将UseSystemPasswordChar属性设置为true,则输入密码时,文本框中将密码显示成为“*”。


    (4)、创建多行文本框:默认情况下,文本框(TextBox控件)只允许输入单行数据,如果将其Multiline属性设置为true,文本框控件(TextBox控件)就可以输入多行数据。


    (5)、突出显示文本框中的文本:在文本框文件(TextBox控件)中,可以通过编程方式选择文本。可以通过SelectionStart属性和SelectionLength属性设置突出显示的文本,SelectionStart属性用于设置选择的起始位置,SelectionLength属性用于设置选择文本的长度。

    (6)、响应文本框的文本更改事件:当文本框中的文本发生更改时,将会引发文本框的TextChanged事件。


    2.3.4、有格式文本控件(RichTextBox控件)
    (1)、有格式文本控件(RichTextBox控件)用于显示、输入和操作带有格式的文本。RichTextBox 控件除了执行TextBox控件的所有功能之外,还可以显示字体、颜色和链接,从文件加载文本和嵌入的图像,撤销和重复编辑操作以及查找指定的字符。
    (2)、在RichTextBox控件中显示滚动条:通过设置RichTextBox控件的Multiline属性,可以控制控件中是否显示滚动条。Multiline属性设置为true,则显示滚动条;否则,设为false。默认情况下,该属性被设置为true。滚动条分为水平滚动条和垂直滚动条,通过ScrollBar属性可以设置如何显示滚动条。

        (ScrollBars属性的属性值及说明)


    (3)、在RichTextBox控件中设置字体属性:通过SelectionFont属性设置RichTextBox控件中字体的字体系列、大小和字样。通过SelectionColor属性设置字体的颜色。


    (4)、将RichTextBox控件显示为超链接样式:RichTextBox控件可以将Web链接显示为彩色或下划线形式。可以编写代码,在单击链接时打开浏览器窗口,该窗口中显示链接文本中指定的网站。通过Text属性,设置控件中含有超链接的文本。然后在控件的LinkClicked事件中编写事件处理程序,将所需的文本发送到浏览器。


    注意:
    在RichTextBox控件的文本中设置超链接时,必须用“htp://”开头,且http的前面不能用数字和字母,只能用空格或是汉字,否则经无法实现超链接操作。
    (5)、在RichTextBox控件中设置段落格式:RichTextBox控件具有多个用于设置所显示的文本格式的选项。可以通过设置SelectionBullet属性设置为项目符号列表的格式。也可以使用SelectionIndent和SelectionHangingIndent属性设置段落相对于控件的左右边缘进行缩进。SelectionIndent属性值表示控件的边缘和文本左边缘之间的距离(以像素为单位)。SelectionHangingIndent属性值表示控件的右边缘与文本的右边缘之间的距离。




    2.4、选择类控件
    2.4.1、下拉组合框控件(ComboBox控件)
    (1)、下拉组合框控件(ComboBox控件)用于在下拉组合框中显示数据。下拉组合框控件(ComboBox控件)主要由两部分组成:第一部分是一个允许用户输入列表项的文本框;第二部分是一个列表框,它显示一个选项列表,用户可从中选择一项。
    (2)、创建只可以选择的下拉框:通过设置DropDownStyle属性,可以将ComboBox控件设置为可以选择的下拉框。

        (DropDownStyle属性的属性值及说明)


    (3)、选中下拉组合框中可编辑部分的所有文本:通过控件的SelectAll()方法,可以选择ComboBox控件的可编辑部分的所有文本。在使用SelectAll()方法之前,要将控件的DropDownStyle属性设置为DropDown,这样才能在文本框部分对选择项进行编辑。


    (4)、响应下拉组合框的选项值更改事件:当下拉列表的选择项发生改变时,将会引发控件的SelectedValueChanged事件。强调->只有当SelectedValue属性更改时才会触发SelectedValueChanged事件。



    2.4.2、复选框控件(CheckBox控件)
    (1)、复选框控件(CheckBox控件)用来表示是否选取了某个选项条件,常用于为用户提供具有是/否或真/假值的选项。
    (2)、判断复选框是否选中:通过在控件的Click事件中判断控件的CheckState属性,来判断复选框是否被选中。CheckState属性的返回值是Checked或Unchecked,返回值Checked表示控件处在选中状态,而返回值Unchecked表示控件已经取消选中状态。



    (3)、响应复选框的选中状态更改事件:当控件的选择状态发生改变时,将会引发控件的CheckStateChanged事件。



    2.4.3、单选按钮控件(RadioButton控件)
    (1)、单选按钮控件(RadioButton控件)为用户提供由两个或多个互斥选项组成的选项集。当用户选中某单选按钮时,同一组中的其他单选按钮不能同时选定。
    (2)、判断单选按钮是否选中:通过在控件的Click事件中判断控件的Checked属性的返回值是否为true,如果返回值是true,则控件被选中;返回值为false,控件选中状态取消。


    (3)、响应单选按钮选中状态更改事件:当控件的选中状态发生更改时,会引发控件的CheckedChanged事件。



    2.4.3、数值选择控件(NumericUpDown控件)
    (1)、数值选择控件(NumericUpDown控件)是一个显示和输入数值的控件。该控件提供一对上下箭头,用户可以单击上下箭头选择数值,也可以直接输入。该控件的Maximum属性可以设置数值的最大值,如果输入的数值大于这个属性的值,则自动把数值改为设置的最大值。该控件的Minimum属性可以设置数值的最小值,如果输入的数值小于这个属性的值,则自动把数值改为设置的最小值。
    (2)、获取NumericUpDown控件中显示的数值:通过控件的Value属性,可以获取NumericUpDown控件中显示的数值。语法:public decimal Value{get;set;}


    (3)、设置NumericUpDown控件中数值的显示方式:NumericUpDown控件的DecimalPlaces属性用于确定在小数点后显示几位数,默认值为0。ThousandsSeparator属性用于确定是否每隔3个十进制数字位就插入一个分隔符,默认情况下为false。如果将Hexadecimal属性设为true,则该控件可以用十六进制(而不是十进制格式)显示值,默认情况下为false。

    2.4.3、列表控件(ListBox控件)
    (1)、列表控件(ListBox控件)用于显示一个列表,用户可以从中选择一项或多项。如果选项总数超出可以显示的项数,则控件会自动添加滚动条。
    (2)、在ListBox控件中添加和移除项:通过ListBox控件的Items属性的Add()方法,可以向ListBox控件中添加项目。通过ListBos控件的Items属性的Remove()方法,可以将ListBox控件中选中的项目移除。


    (3)、创建总显示滚动条的列表控件:通过设置控件的HorizontalScrollbar属性和ScrollAlwaysVisible属性可以使控件总显示滚动条。如果将HorizontalScrollbar属性设置为true,则显示水平滚动条;如果将ScrollAlwaysVisible属性设置为true,则始终显示垂直滚动条。

    (4)、在ListBox控件中可以使用MultiColmn属性指示控件是否支持多列,如果将其设置为true,则支持多列显示。
    (5)、在ListBox控件中选择多项:通过设置SelectionMode属性的值可以实现在ListBox控件中选择多项。SelectionMode属性的属性值是SelectionMode枚举值之一,默认为SelectionMode.One。

        (SelectionMode枚举成员即说明)



    2.5、分组类控件
    分组类控件主要包括容器控件(Panel控件)、分组控件(GroupBox控件)和选项卡控件(TabControl控件)。

    2.5.1、容器控件(Panel控件)
    (1)、容器控件(Panel控件)用于为其他控件提供可识别的分组。容器控件(Panel控件)可以使窗体的分类更详细,便于用户理解。容器控件(Panel控件)可以有滚动条。容器控件就好像是商场的各个楼层,如1楼是化妆品、2楼是男装层、3楼是女装层等。当然也可以在各层中继续划分,也就是可以在容器控件中嵌套放置多个容器控件。


    (2)、如果将Panel控件的Enabled属性(设置控件是否可以对用户交互作出响应)设置为false,那么在该容器中的所有控件将设为不可用状态。

    2.5.2、分组框控件(GroupBox控件)
    (1)、分组框控件(GroupBox控件)主要为其他控件提供分组,按照控件的分组来细分窗体的功能。其在所包含的控件集周围总是显示边框,并且可以显示标题,但是分组框控件(GroupBox控件)没有滚动条。



    2.5.3、选项卡控件(TabControl控件)
    (1)、选项卡控件(TabControl控件)可以添加多个选项卡,然后在选项卡上添加子控件。这样就可以把窗体设计成多页,使窗体的功能划分为多个部分。选项卡中可包含图片或其他控件。选项卡控件还可以用来创建用于设置一组相关属性的属性页。TabControl控件包含选项卡页,TabPage控件表示选项卡,TabControl控件的TabPages属性表示其中所有TabPage控件集合。TabPages集合中TabPage选项卡的顺序反映了TabControl控件卡的顺序。
    (2)、改变选项卡的显示样式:通过使用TabControl控件和组成控件上各个选项卡的TabPage对象的属性,可以更改Windows窗体中选项卡的外观。


    (3)、为了使用户能更了解选项卡的作用,可以在鼠标移入选项卡时,弹出一个提示信息,对当前选项卡的作用或操作步骤进行详细说明。设置步骤如下:将tabtabControl属性中的ShowToolTips属性设置为true,然后再tabPage属性的ToolTipText属性中输入相关的说明文字。


    (4)、将选项卡显示为按钮:TabControl控件的Appearance属性设置为Buttons或FlatButtons,即可将选项卡显示为按钮样式。如果设置为Buttons,则选项卡具有三维按钮的外观。如果设置为FlatButtons,则选项卡具有平面按钮的外观。


    (5)、在选项卡中添加控件:如果要在选项卡中添加控件,可以通过TabPage的Controls属性的Add()方法实现。在设置TabControl控件中的控件位置时,是以TabControl控件为参照物的。


    (6)、添加和移除选项卡:控件默认情况下,TabControl控件包含两个TabPage控件,可以使用TabPages属性的Add()方法添加新的选项卡,可以使用TabPages属性的Remove()方法移除选项卡。但如果要删除所有的选项卡,可以使用TabPages属性的Clear()方法,即TabControl1.TabPages.Clear();。




    2.6、菜单、工具栏和状态栏控件
    菜单是窗体应用程序主要的用户界面要素,工具栏为应用程序提供了操作系统的界面,状态栏显示系统的一些状态信息。

    2.6.1、菜单控件(MenuStrip控件)
    (1)、菜单控件(MenuStrip控件)是程序的主菜单。MenuStrip控件取代了先前版本的MainMenu控件。MenuStrip控件支持多文档界面、菜单合并、工具提示和溢出。可以通过添加访问键、快捷键、选中标记、图像和分隔条,来增强菜单的可用性和可读性。
    (2)、创建一个类似World的“文件”菜单:
    ①、创建一个Windows应用程序,从工具箱中将MenuStrip控件拖拽到窗体中。


            ②、在输入菜单名称时,系统会自动产生输入下一个菜单名称的提示。


            ③、在提示的文本框中输入“文件(&F)”后,就会产生“文件(F ‾ \underline{F} 

F

)”。在此处“&”被识别为确认快捷键的字符。例如,“文本(F ‾ \underline{F}
F

)”菜单就可以通过按Alt+F快捷键打开。

    2.6.2、工具栏控件(ToolStrip控件)
    (1)、工具栏控件(ToolStrip控件)是.NET框架3.5增加的新控件,它替换了早期版本的ToolBar控件、ToolStrip及其关联的类,可以创建具有Windows XP、Office、Internet Explorer或自定义的外观和行为的工具栏及其他用户界面元素。这些元素支持溢出及运行时重新排序。工具栏其实就相当于工厂每个工人的工具箱,每个工人都有自己常用的工具(可以是工厂发的也可以是自己做的),为了方便工作,将这些常用工具放入个人工具箱中。
    (2)、实例演示创建工具栏:
    ①、创建一个Windows程序,从工具箱中将ToolStrip控件拖拽到窗体中。


            ②、然后单击工具栏上向下箭头的提示图标。

                (TooStrip添加工具栏项目中不同类型的说明)


            ③、添加响应的工具栏按钮后,可以设置按钮显示的图像。



    2.6.3、状态栏控件(StatusStrip控件)
    (1)、 状态栏控件(StatusStrip控件)通常处于窗体的最底部,用于显示窗体上的对象的相关信息,或者可以显示应用程序的信息。通常,StatusStrip控件由ToolStripStatusLabel对象组成,每个这样的对象都可以显示文本、图标或同时显示这两者。StatusStrip还可以包含ToolStripDropDownButton、ToolStripSplitButton和ToolStripProgressBar控件。
    (2)、实例演示状态栏控件:
    ①、创建一个Windows程序,使用StatusStrip控件制作状态栏。


            ②、使用StatusStrip控件制作状态栏,在状态栏中显示当前日期,以及ToolStripProgressBar控件,单击“加载”按钮加载进度条。(ToolStripProgressBar控件只能以水平方向显示进度条)

3、Windows应用程序高级控件
3.1、ImageList控件(存储图像控件)
ImageList控件(存储图像控件)用于存储图像资源,然后在控件中显示出来,这样就简化了对图像的管理。ImageList控件的主要属性是Images。它包含关联控件将使用的图片。每个单独的图像可通过其索引值或键值来访问。所有图像都将以相同的大小显示,该大小由ImageSize属性设置,较大的图像将所有至适当的尺寸。ImageList控件实际上就相当于一个图片集,也就是将多个图片存储到图片集中,当想要对某一图片进行操作时,只需根据其图片的编号,就可以找出该图片,并对其进行操作。

    3.1.1、在ImageList控件中添加图像
    (1)、使用ImageList控件中的Images属性的Add()方法,可以以编程的方式向ImageList控件中添加图像。


    (2)、在向ImageList组件中存储图片时,可以通过该组件的ImageSize属性设置图片的尺寸,其默认尺寸是16 x 16,最大尺寸是256 x 256。

    3.1.2、在ImageList控件中移除图像
    (1)、在ImageList控件中可以使用RemoveAt()方法移除单个图像。


    (2)、在ImageList控件中也可以使用Clear()方法从ImageList中移除所有图像,代码如下:imageList1.Images.Clear();。

    3.2、ListView控件(列表视图控件)
    ListView控件(列表视图控件)显示带图标的项的列表,可以显示大图标、小图标和数据。ListView控件可以通过View属性设置项在控件中显示的方式。

        (View属性的值及说明)

    3.2.1、在ListView控件中添加移除项
    (1)、在ListView控件中添加项:可以使用ListView控件中的Items属性Add()方法项控件中添加项。


    (2)、在ListView控件中移除项:可以通过使用控件的Items属性的RemoveAt()或Clear()方法可以移除控件中的项。RemoveAt()方法移除指定的项,而Clear()方法移除列表中的所有项。



    3.2.2、选择ListView控件中的项
    (1)、可以通过控件的Selected属性设置控件中的选择项。



    (2)、如果用按钮控件选择ListView控件中的项,除了用Selected属性选择指定的项外,还通过Focus()方法使ListView控件获得焦点。

    3.2.3、为ListView控件中的项添加图标
    (1)、如果为ListView控件中的项添加图标,则需要与ImageList控件相结合。使用ImageList控件设置ListView控件中项的图标,ListView控件可显示3个图像列表中的图标。List视图、Details视图和SmallIcon视图显示SmallImageList属性中指定的图像列表中的图像。LargeIcon视图显示LargeImageList属性中指定的图像列表中的图像。列表视图还可以在大图标或小图标旁显示StateImageList属性中设置的一组附加图标。实现的步骤如下:
    ①、将相应的属性(SmallImageList、LargeImageList或StateImageList)设置为想要使用的现有 ImageList组件。
    ②、为每个具有关联图标的列表项设置ImageIndex或StateImageIndex属性。这些属性可在代码中设置,或在“ListViewItem集合编辑器”中进行设置。若要打开“ListViewItem集合编辑器”,可在“属性”窗口中单击Items属性旁的省略号按钮,这些属性可在设计器中使用“属性”窗口进行设置,也可在代码中设置。



    3.2.4、在ListView控件中启动平布视图
    (1)、启用ListView控件的平铺视图功能,可以在图形信息和文本信息之间提供一种视觉平衡。为平铺视图中的某项显示的文本信息与为详细信息视图定义的列信息相同。在ListView控件中,平铺视图与分组功能或插入标记功能一起结合使用。如果要启用平铺视图,需要将View属性设置为Tile,可以通过设置TileSize属性来调整平铺的大小。


    (2)、在对ListView控件中的GridLines(行和列之间是否显示网格线)和FullRowsSelect(单击某项是否选择其所有子项)属性进行操作时,必须将View属性设置为View.Details。

    3.2.5、为ListView控件中的项分组
    (1)、使用ListView控件的分组功能可以用分组的形式显示相关项组。在屏幕上,这些组由包含组标题的水平组标头分隔。可以使用ListView组按字母顺序、日期或任何其他逻辑组合对项进行分组,从而简化大型列表的导航。若要分组,首先必须在设计器中或以编程方式创建一个或多个组。定义组后,可向组分配ListView项。此外,可以用编程方式将一个组中的项移至另一个组中。
    (2)、添加组:使用Groups集合的Add()方法可以向控件中添加组,Add()方法用于将指定的ListViewGroup添加到集合。例如:使用Groups集合中的Add()方法项控件listView1中添加一个分组,标题为“测试”,排列方式为左对齐,代码如下:listView1.Gropus.Add(new ListViewGroup(“测试”,HorizontalAlignment.Left));。
    (3)、移除组:使用Groups集合的RemoveAt()或Clear()方法,可以移除指定的组或者移除所有的组。例如:使用Groups集合的RemoveAt()方法移除索引为1的组,使用Clear()方法移除所有的组,代码如下:listView1.Groups.RemoveAt(1);listView1.Groups.Clear();。
    (4)、向组分配项或在组之间移动项:设置各个项的System.Windows.Forms.ListViewItem.Group属性,可以向组分配项或在组之间移动项。



    3.3、TreeView控件(树控件)
    TreeView控件(树控件)可以为用户显示节点层次结构,每个节点又可以包含子节点,包含子节点的节点叫父节点。

    3.3.1、添加或删除树节点
    (1)、添加节点:使用TreeView控件Nodes属性的Add()方法,可以向控件中添加节点。


    (2)、移除节点:使用TreeView控件Nodes属性的Remove()方法可以从树节点集合中移除指定的树节点。



    3.3.2、获取树控件中选中的节点
    (1)、可以在控件的AfterSelect事件中,使用EventArgs对象返回对已单击节点对象的引用。通过检查TreeViewEventArgs类(它包含与事件有关的数据),确定单击了哪个节点。


    (2)、在BeforeCheck(在选中树节点复选框发生)或AfterCheck(在选中树节点复选框后发生)事件中尽可能不要使用TreeNode.Checked属性。

    3.3.3、为树控件中的节点设置图标
    (1)、TreeView控件可在每个节点旁显示图标。图标紧挨着节点文本的左侧。若要显示这些图标,必须使树视图与ImageList控件相关联。



    3.4、DataTimePicker控件(日期控件)
    DataTimePicker控件(日期控件)用于选择日期和时间,DateTimePicker控件只能选择一个时间,而不是连续的时间段,也可以直接输入日期和时间。

    3.4.1、使用DateTimePicker控件显示时间
    (1)、通过将控件的Format属性设置为Time,实现控件只显示时间。Format属性用于获取或设置控件中显示的日期和时间格式。语法如下:public DateTimePickerFormat Format{get;set;}。

        (DateTimePickerFormat枚举的值及说明)


    (2)、如果想要在改控件内用按钮调整时间值,则需要将ShowUpDown属性设置为true。

    3.4.2、使用DateTimePicker控件自定义格式显示日期
    (1)、通过DateTimePicker控件的CustomFormat属性可以自定义日期/时间格式字符串。语法如下:public string CustomFormat{get;set;}。

        (有效格式字符串及其说明)



    3.4.3、返回DateTimePicker控件中选择的日期
    (1)、调用控件的Text属性以返回与控件中的格式相同的完整值,或调用Value属性的适当方法来返回部分值,这些方法包括Year、Month和Day方法等,使用ToString将信息转换成可显示给用户的字符串。



    3.5、MonthCalendar控件(月历控件)
    MonthCalendar控件(月历控件)提供了一个直观的图像界面,可以让用户查看和设置日期。MonthCalendar控件中可以使用鼠标进行拖拽,用于选择一段连续时间,此段连续的时间包括时间的起始和结束。

    3.5.1、更改MonthCalendar控件的外观
    (1)、更改月历的配色方案:设置TitleBackColor、TitleForeColor和TrailingForeColor等属性可以更改月历控件的配色方案。TitleBackColor属性用于设置日历标题区的背景色,TitleForeColor属性用于设置日历标题区的前景色,TrailingForeColor属性用于设置没有完全显示的日期的颜色。
    (2)、显示周数:将ShowWeekNumbers属性设置为true,实现在控件中显示周数。也可以用代码或在“属性”窗口中设置此属性。周数以单独的列出现在一周的第一天的左边。



    3.5.2、在MonthCalendar控件中显示多个月份
    (1)、 MonthCalendar控件最多可同时显示12个月。默认情况下,控件只显示1个月,但可以通过设置CalendarDimensions属性指定显示多少个月以及它们在控件中的排列方式。当更改月历尺寸时,控件的大小也会随之改变,因此应确保窗体上有足够的空间供新尺寸使用。

    (2)、CalendarDimensions属性一次只显示一个日历年,并且最多可显示12个月。行和列的有效组合得到的最大乘积为12,对于大于12的值,将在合适的基础上修改显示。

    3.5.3、在MonthCalendar控件中选择日期范围
    (1)、如果要在MonthCalendar控件中选择日期范围,必须设置SelectionStart和SelectionEnd属性,这两个属性分别用于设置日期的起始和结束。



    3.6、其他高级控件
    除了上述到的常用高级控件外,窗体中还包含其他高级控件,包括ErrorProvider控件、HelpProvider控件、Timer控件和ProgressBar控件等。

    3.6.1、使用ErrorProvider控件验证文本框输入
    (1)、ErrorProvider控件可以在不打扰用户的情况下向用户显示有错误发生。当验证用户在窗体中的输入或显示数据集内的错误时,一般要用到该控件。ErrorProvider控件通过SetError()方法设置指定控件的错误描述字符串。语法如下:public void SetError(Control control,string value); control:要为其设置错误描述字符串的控件。value:错误描述字符串。判断文本框输入的数据是否准确,需要在控件的Validating事件中进行判断,然后设置ErrorProvider控件的错误描述字符串,当控件正在验证时会触发此事件。



    3.6.2、使用HelpProvider控件调用帮助文件
    (1)、HelpProvider控件可以将帮助文件(.htm文件或.chm文件)与Windows应用程序相关联,为特定对话框或对话框中的特定控件提供区分上下文的帮助,打开帮助文件到特定部分。如目录、索引或搜索功能的主页。通过设置控件的HelpNamespace属性以及SetShowHelp()方法,实现当按F1键时,打开指定的帮助文件。HelpNamespace属性值指定与HelpProvider对象关联的帮助文件名。语法:public vrtual string HelpNamespace{get;set;};SetShowHelp()方法用于指定是否显示指定控件的帮助信息。语法:public virtual void SetShowHelp(Control ctl,bool value);clt控制其帮助信息已打开或关闭。value如果显示控件的帮助信息,则为true,否则为false。



    (2)、如果没有对HelpNamespace属性进行设置,则必须使用SetHelpString()方法提供帮助文本。

    3.6.3、使用Timer控件设置时间间隔
    (1)、Timer控件可以定期引发事件,此控件是为Windows窗体环境设计的。时间间隔的长度由Interval属性定义,其值以毫秒为单位。若启用了该组件,则每个时间间隔引发一个Tick事件,在Tick事件中添加要执行的代码。


    (2)、在启动和停止定时器时,也可以应用Start和Stop方法来实现。

    3.6.4、使用ProgressBar控件显示程序运行进度条
    (1)、ProgressBar控件通过水平放置的方框中显示适当数目的矩形,指示工作的进度。工作完成时,进度条被填满。进度条用于帮助用户了解等待一项工作完成的进度。ProgressBar控件比较重要的属性有Value、Minimum和Maximum。Minimum和Maximum属性主要用于设置进度条的最小值和最大值,Value属性表示操作过程中已完成的进度。而控件的Step属性用于指定Value属性递增的值,然后调用PerformStep()方法来递增该值。

FormBorderStyle属性的属性值及说明

属性值 说明
Fixed3D 固定的三维边框
FixedDialog 固定的对话框样式的粗边框
FixedSingle 固定的单行边框
FixedToolWindow 不可调整大小的工具窗口边框
None 无边框
Sizable 可调整大小的边框
SizableToolWindow 可调整大小的工具窗口边框

StartPosition属性的属性值及说明

属性值 说明
CenterParent 窗体在其父窗体中居中
CenterScreen 窗体在当前显示窗口中居中,其尺寸在窗体大小中指定
Manual 窗体的位置由Location属性确定
WindowsDefaultBounds 窗体定位在Windows默认位置,其边界也由Windows默认决定
WindowsDefaultLocation 窗体定位在Windows默认位置,其尺寸在窗体大小中指定

MdiLayout的枚举成员及说明

枚举成员 说明
Cascade 所有MDI子窗体均层叠在MDI父窗体的工作区内
TileHorizontal 所有MDI子窗体均水平平铺在MDI父窗体的工作区内
TileVertical 所有MDI子窗体均垂直平铺在MDI父窗体的工作区内

ScrollBars属性的属性值及说明

属性值 说明
Both 只有当文本超过控件的宽度或长度时,才显示水平滚动条或垂直滚动条,或两个滚动条都显示
None 从不显示任何类型的滚动条
Horizontal 只有当文本超过控件的宽度时,才显示水平滚动条。必须将WordWrap属性为false,才会出现这种情况
Vertical 只有当文本超过控件的高度时,才会显示垂直滚动条
ForcedHorizontal 当WordWrap属性设置为false时,显示水平滚动条。在文本未超过控件的宽度时,该滚动条显示为浅灰色
ForcedVertical 始终显示垂直滚动条。在文本未超过控件长度时,该滚动条显示为浅灰色
ForcedBoth 始终显示垂直滚动条。当WordWrap属性设置为false时,显示水平滚动条。在文本未超过控件的宽度或高度时,两个滚动条均显示为灰色
注意:
当WordWrap(指示多行文本框控件在必要时是否自动换行到下一行的开始)属性为true时,则不论ScrollBars属性的值是什么,都不会显示水平滚动条。

DropDownStyle属性的属性值及说明

属性值 说明
Simple 使ComboBox控件的列表部分总是可见的
DropDown DropDownStyle属性的默认值,使用户可以编辑ComboBox控件的文本框部分,只有单击右侧的箭头才能显示列表部分
DropDownList 用户不能编辑ComboBox控件的文本框部分,呈现下拉框的样式

SelectionMode枚举成员即说明

枚举成员 说明
MultiExtended 可以选择多项,并且用户可使用Shift键、Ctrl键和箭头来进行选择
MultiSimple 可以选择多项
None 无法选择项
One 只能选择一项

TooStrip添加工具栏项目中不同类型的说明

枚举成员 说明
Button 包含文本和图像中可让用户选择的项
Label 包含文本和图像的项,不可以让用户选择,可以实现超链接。
SplitButton 在Button的基础上增加了一个下拉菜单
DropDownButton 用于下拉菜单的选择项
Separator 分割符
ComboBox 显示一个ComboBox的项
TextBox 显示一个TextBox项
ProgessBar 显示一个ProgessBar的项

View属性的值及说明

属性值 说明
Details 每个项显示在不同的行上,并带有关于列中所排列的各项的进一步信息。最左边的列包含一个小图标和标签,后面的列包含应用程序指定的子项。列显示一个标头,它可以显示列的标题。用户可以在运行时调整各列的大小
LargeIcon 每个项都显示为一个最大的图表,在它的下面有一个标签。这是默认的视图模式
List 每个项都显示为一个小图标,在它右边带有一个标签,各项排列在列中,没有列标头
SmallIcon 每个项都显示为一个小图标,在它右边带一个标签
Tile 每个项都显示为一个完整大小的图表,在它的右边带项标签和子项信息。显示的子项信息由应用程序指定

DateTimePickerFormat枚举的值及说明

枚举值 说明
Custom DateTimePicker控件以自定义格式显示日期/时间值
Long DateTimePicker控件以用户操作系统设置的长日期格式显示日期/时间值
Short DateTimePicker控件以用户操作系统设置的短日期格式显示日期/时间值
Time DateTimePicker控件以用户操作系统设置的时间格式显示日期/时间值

有效格式字符串及其说明

格式字符串 说明
d 一位数或两位数的天数
dd 两位数的天数,一位数天数的前面加一个0
ddd 3个字符的星期几缩写
dddd 完整的星期几名称
h 12小时格式的一位数或两位数小时数
hh 12小时格式的两位数小时数,一位数数值前面加一个0
hhh 24小时格式的一位数或两位数小时数
hhhh 24小时格式的两位数小时数,一位数数值前面加一个0
m 一位数或两位数分钟值
mm 两位数分钟值,一位数数值前面加一个0
M 一位数或两位数月份值
MM 两位数月份值,一位数数值前面加一个0
MMM 3个字符的月份缩写
MMMM 完整的月份名
s 一位数或两位数秒数
ss 两位数秒数,一个数数值前面加一个0
t 单字母A.M./P.M缩写(A.M将显示为A)
tt 两字母A.M/P.M缩写(X.M将显示为AM)
y 一位数的年份(2001显示为1)
yy 年份的最后两位数(2001显示为01)
yyyy
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_48034474/article/details/122186711

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值