基于.NET的Windows窗体编程之WinForms控件简介
在前一篇文章《基于.NET的Windows窗体编程之WinForms入门简介》中我们了解到了Windows窗体编程在如何创建程序Form页面相关属性和事件以及如何启动调试程序今天继续介绍基于.NET的Windows窗体编程中的控件部分控件是Windows窗体编程过程中常用且十分重要的内容通过控件可以搭建起程序和用户沟通的桥梁它不仅可以接收用户的输入还可以向用户展示计算得到的结果。所以掌握常见控件的功能和用法对于Windows窗体编程将会起到事半功倍的效果。本文主要讲解控件的基础用法仅供学习分享使用如有不足之处还请指正。控件概述在.NET UI框架中将一些常用的功能封装成独立的组件它封装了组件晦涩难懂的创建过程以及用户界面功能并且公开相应的属性用于设置组件呈现形式以及相应的事件委托用于处理对用户操作的响应这就是控件。Windows窗体控件是可复用的每一个控件实例都表示一个内存中的对象。Windows 窗体不仅提供许多现成的控件还提供用于开发自己的控件的基础结构。 可以合并现有控件、扩展现有控件或创作自己的自定义控件。添加控件在Visual Studio设计器中添加控件主要有以几种形式1. 拖动控件添加从工具箱中选择需要添加的控件按住鼠标拖动到需要添加的Form窗体中指定位置然后松开鼠标即可如下所示2. 双击控件添加在工具箱中选择需要添加的控件然后双击鼠标即可添加控件到Form窗体的上上角位置并呈现选中状态可以手动拖动控件到目标位置如下所示3. 绘图添加首先在工具箱中选择需要添加的控件然后在Form窗体中用鼠标拖动选择一个区域会自动添加控件到Form窗体中并按照拖动区域的大小填充如下所示4. 代码添加可以在Form窗体的类文件中通过编写代码进行动态添加如下所示private void Form1_Load(object sender, EventArgs e) { Label label1 new Label() { Text Hello World., Location new Point(10, 10), TabIndex 10 }; TextBox textBox1 new TextBox() { Location new Point(10,30), Width100, Height20, TabIndex 11 }; this.Controls.Add(label1); this.Controls.Add(textBox1); }通过调试运行程序可以发现控件已经添加到Form1窗体中如下所示控件分类在Windows窗体开发中控件要构建用户页面的基础根据功能大致可以分为以下几类基础控件主要包含基础单一功能的控件根据具体用途又可以细分为以下几类按钮与选择Button 普通按钮具备点击功能CheckBox 复选框相同的组里面可以同时选择多个如一个人可以有多个爱好。RadioButton 单选按钮相同的组里面同时只能选择1个如一个人的性别只能是男或女。输入与显示TextBox 文本框可以用于输入纯文本内容。Label只能用于显示文本不可编辑。RichTextBox可以显示富文本如加粗斜体以及图片等样式。LinkLabel用于显示带链接的文本。MaskedTextBox使用掩码区分正确和不正确的用户输入的文本框。列表与选择ComboBox下拉列表框只能有一个被选中。ListBox 列表框。ListView带图标的列表视图。TreeView 树状结果的列表。CheckListBox复选框列表。其他控件DateTimePicker日期时间选择器。MonthCalendar月历控件。PictureBox图像控件。NumbericUpDown数值调节按钮。ProgressBar进度条。ToolTip工具悬停提示。NotifyIcon通常用于显示在后台运行的进程图标并且大部分时间都不会显示用户界面。WebBrowser用于显示浏览器中的网页信息。TrackBar滑动条。Chart图表控件。容器控件容器控件类似一个容器包含子控件列表主要有Panel用于分组和布局其他控件支持滚动条。GroupBox带标题的容器用于逻辑分组。SplitContainer可调整大小的分隔窗格用于分栏布局。TabControl多标签页容器切换不同内容区域。FlowLayoutPanel流式布局容器自动排列子控件。TableLayoutPanel表格布局容器支持行和列的定义。菜单和工具栏主要用于显示菜单栏工具栏右键菜单等功能主要有ContextMenuStrip右键菜单MenuStrip主菜单StatusStrip状态栏ToolStrip工具栏ToolStripContainer。打印主要用于打印输出文档主要有PageSetupDialog用于设置在基于 Windows 的应用程序中打印的页面详细信息。PrintDialog用于选择打印机、选择要打印的页面并确定基于 Windows 的应用程序中的其他打印相关设置。PrintDocument用于设置属性这些属性描述在基于 Windows 的应用程序中要打印什么内容以及打印文档的能力。PrintPreviewControl用于显示 PrintDocument 打印时的预览效果。PrintPreviewDialog用于显示 PrintDocument 的打印效果。对话框主要用于弹出框供用户选择内容主要有ColorDialog颜色选择对话框。FolderBrowserDialog文件夹浏览对话框。FontDialog字体选择对话框。OpenFileDialog打开文件对话框。SaveFileDialog保存文件对话框。数据BindingSource可绑定数据源DataGridView表格数据展示与编辑。DataList数据绑定列表。BindingNavigator数据导航控件。组件BackgroundWorker后台异步操作ErrorProvider输入验证提示FileSystemWatcher文件系统监控比如文件的新增修改删除等操作。HelpProvider用于将 Windows 应用程序与 HTML Help 1.x 帮助文件HTML Help Workshop 生成的 .chm 文件或 .htm 文件关联。ImageList用于存储图像然后可由控件显示。Process表示进程操作。Timer后台定时任务。创建新控件如果当前UI框架提供的默认控件无法满足需求则可以根据需求创建新的控件主要分为以下几种方式用户控件此类控件又称为复合控件它是将Windows提供的基础控件进行组合实现特定的功能。然后再统一进行复用。扩展控件从任何现有的 Windows 窗体控件派生继承的控件使用此方法你可以保留 Windows 窗体控件的所有固有功能然后通过添加自定义属性、方法或其他功能来扩展该功能。自定义控件通过从 Control 继承从头开始充分创建一个控件。控件布局在.NET Windows 应用程序开发中窗体中的控件位置不仅由控件确定还由控件的父级确定。 主要有以下几种控件位置布局固定位置和大小控件在父级上的位置由控件距离父级左上角的 Location 属性的值确定。 父级控件的左上角位置坐标为(x0,y0)。 控件的大小由 Size 属性确定表示控件的宽度和高度。当控件被添加到支持自动定位的父控件时该控件的位置和大小会发生改变。 在这种情况下可能无法手动调整控件的位置和大小具体取决于父级的类型。边距和填充Margin 属性定义控件周围的空间该空间使其他控件与控件的边框保持指定距离。Padding 属性定义控件内部的一段空间用于将控件的内容例如其 Text 属性的值保持在距控件边框一定的距离。停靠(Dock)属性可设置控件的哪个边与父级的对应边对齐以及如何在父级中调整控件的大小。Dock属性要一个枚举类型它有5个值设置后效果如下当控件停靠时容器会确定其应占用的空间调整控件的大小并进行定位。 基于停靠样式仍采用控件的宽度和高度。 例如如果将控件停靠在顶部则采用控件的 Height但自动调整 Width。 如果将控件停靠在左侧则采用控件的 Width但自动调整 Height。控件的Location无法手动设置因为停靠控件会自动设置位置。控件的Z-order会影响停靠。 对停靠后的控件进行布局时将占用可用空间。 例如如果控件首先被绘制并停靠在顶部它就会占据容器的整个宽度。 如果下一个控件被停靠在左侧则该控件的可用垂直空间较少。如果控件的Z-order倒置停靠在左侧的控件将拥有更多的初始可用空间。 该控件使用容器的整个高度。 停靠在顶部的控件具有较少的水平空间。随着容器增大和缩小停靠在容器上的控件将重新定位并调整大小以保持其位置和大小处于适当状态。如果多个控件停靠在容器的同一侧则根据其Z-order将其堆叠。锚点(Anchor)通过定位控件可将控件绑定到父级容器的一侧或多侧。 随着容器大小的变化锚定子控件保持与定位端的距离。控件可以定位到一侧或多侧不存在限制。 定位点由 Anchor 属性设置。以上就是《基于.NET的Windows窗体编程之WinForms控件简介》的全部内容旨在抛砖引玉一起学习共同进步。