参考、资源等见单章:https://blog.csdn.net/qq_35479392/article/details/100582710
(原文为Word版,食用更佳)
组件 = 可视化的组件(控件) + 不可视化的组件
控件
含义:是界面组件;是带有可视化表示形式的组件;是包含在窗体内的对象。
作用:主要功能是实现输入和输出;不同类型的控件具有其特有的属性和事件。
文本类控件 包括 标签控件(Label)、按钮控件(Button)、文本框控件(TextBox)、格式文本框控件(RichTextBox)等。
由System.Windows.Forms.Lable类提供,主要用于 显示文本。
表1 Lable控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Text |
显示的文本 |
|
Visible |
确定该控件是可见的还是隐藏的 |
|
Font |
显示控件中文本的字体 |
|
事件 |
Click |
单击事件 |
由System.Windows.Forms.Lable类提供,主要用于 接收用户对鼠标的操作,完成用户与应用程序之间的交互。
Button控件支持的操作包括:鼠标的单击、双击、键盘的Enter键操作
表2 Button控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Text |
显示的文本 |
|
Size |
控件的大小(以像素为单位) |
|
Image |
设置控件的图像 |
|
事件 |
Click |
单击事件 |
由System.Windows.Forms.TextBox类提供,主要用于 在应用程序中接收用户输入的文字,它允许用户输入任何字符。
用户的所有输入都保存在TextBox控件的Text属性中.
文本框支持3种输入模式:单行、多行、密码 输入模式
单行:最多可输入2048个字符(默认)
多行:最多可输入32KB的文本(设置文本框的Multiline属性为true)
密码:无论用户输入什么文本,系统只显示密码字符(设置文本框的UseSystemPasswordChar属性为true)
表3 TextBox控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Text |
显示的文本 |
|
ScrollBars |
指定对于多行编辑控件,将为此控件显示哪些滚动条 |
|
PasswordChar |
设置密码字符串 |
|
UseSystemPasswordChar |
指示编辑控件中的文本是否以默认的密码字符显示 |
|
ReadOnly |
指示文本框中的文本是否为只读 |
|
Multiline |
控制编辑控件的文本是否能跨越多行 |
|
事件 |
Click |
单击事件 |
Leave |
失去输入焦点时引发的事件 |
|
TextChanged |
在控件上更改Text属性的值时引发的事件 |
代码实例
需求:设计一个简单的用户登陆界面,当输入用户名和密码正确时,提示登陆成功,否则提示登陆失败。
步骤:
首先,将所需的窗体及控件的属性以表格形式列出;
然后,通过控件的关联事件实现功能;
最后,测试。
代码:
Form1.cs:
namespace Controls
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
if (txtName.Text == "user" && txtPassword.Text == "123")
{
MessageBox.Show("登陆成功!");
}
else
{
MessageBox.Show("用户名或密码错误!");
}
}
private void btnReset_Click(object sender, EventArgs e)
{
//遍历窗体中所有控件
foreach (Control item in this.Controls)
{
if (item is TextBox)
{
item.Text = "";
}
}
}
}
}
结果:
RichTextBox,即有格式文本框控件,由System.Windows.Forms. RichTextBox类提供。RichTextBox控件使用标准的格式化文本,称为富文本格式。
主要作用:打开和保存RTF文件和普通ASCII文本文件,并且显示、输入和操作带有格式的文本,可以显示字体、颜色和链条,从文件加载文本和加载嵌入的图像,以及查找指定的字符,因此也常常被称为增强的文本框。
TextBox、RichTextBox 共同点和区别:
共同点:用于对文本的处理
不同点:前者 常用于输入较短的文本字符;后者 多用于显示和输入格式化的文本。
表4 RichTextBox控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Lines |
多行编辑中的文本行,作为字符串值的数组 |
|
Size |
控件的大小(以像素为单位) |
|
Location |
控件左上角相对于其它容器左上角的坐标 |
|
Rtf |
与Text属性相似,但包括RTF格式的文本 |
|
事件 |
TextChanged |
在控件上更改Text属性的值时引发的事件 |
代码实例
需求:设计一个简历编辑器,实现对jianli.rtf文件的各种操作。
设计:
(1)确定控件、及其属性、及关联的事件
窗体及控件属性设置
窗体和控件 |
属性 |
属性值 |
Form2 |
Text |
简历编辑器 |
RichTextBox |
Name |
richTextBox1 |
button1 |
Name Text |
btnLoad 加载 |
Button2
|
Name Text |
btnSave 保存 |
Button3 |
Name Text |
btnCopy 复制 |
Button4 |
Name Text |
btnCut 剪切 |
Button5 |
Name Text |
btnPaste 粘贴 |
Button6 |
Name Text |
btnBackColor 背景色 |
Button7 |
Name Text |
btnColor 颜色 |
Button8 |
Name Text |
btnFont 字体 |
(2)功能实现
新增一个Form2窗体
…
(3)代码+运行结果图
Main()函数中相应语句修改为:
Application.Run(new Form2());
什么是句柄?
参考 https://baike.baidu.com/item/句柄
句柄(handle),有多种意义,第一种解释:句柄是一种特殊的智能指针 。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄。 [1] 第二种解释:整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不在I/O文件中,它是毫无用处的。 句柄是Windows用来标志应用程序中建立的或是使用的唯一整数,Windows大量使用了句柄来标识对象。
代码实例注意点
确保在使用控件的LoadFile前,该控件的句柄已经被创建。
参考msdn:
https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.richtextbox.loadfile?view=netframework-4.8
RichTextBox.LoadFile Method
LoadFile(String)
Loads a rich text format (RTF) or standard ASCII text file into the RichTextBox control.
public void LoadFile (string path);
path String
The name and location of the file to load into the control.
Note
The LoadFile method will not open a file until a handle is created for the RichTextBox. Ensure that the control's handle is created before calling the LoadFile method.
确保在使用控件的LoadFile前,该控件的句柄已经被创建。
在使用文本框构建用户的输入界面时,虽然可以检查或验证用户输入的有效性,但仍然不能完全确保用户的输入是系统所期望的数据。为此,必须设计只能通过选择即可完成的数据输入的操作界面。.NET Framework为Windows窗体提供了丰富的选择类控制,选择类控件包括单选按钮控件(RadioButton)、复选框控件(CheckBox)、列表框控件(ListBox)以及下拉框控件(ComBox)等。
RadioButton,即单选按钮控件,是由System.Windows.Forms.RadioButton类提供的,主要作用于将一个或者多个选项列出,让用户从中选择一项。
表1 RadioButton控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Text |
显示的文本 |
|
Checked |
指示单选按钮是否选中 |
|
AutoSize |
指定控件是否自动调整自身的大小以适应其内容的大小 |
|
事件 |
CheckedChanged |
每当Changed属性更改值时发生 |
CheckBox,即复选框控件,是由System.Windows.Forms.CheckBox类提供的,主要用于将一个或多个选项列出,让用户从中选择一项或多项。当某一个选项被选中后,其左边的小方框会显示有一个勾。
表2 CheckBox控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Text |
显示的文本 |
|
Checked |
指示单选按钮是否选中 |
|
CheckState |
用来设置或返回复选框的状态,有3种可能:Checked、Unchecked、Indeterminage |
|
事件 |
CheckedChanged |
每当Changed属性更改值时发生 |
CheckStateChanged |
每当CheckState属性值更改时发生 |
ListBox,即列表框控件,是由System.Windows.Forms.ListBox类提供的,主要作用于将一个集合数据以列表框的形式显示给客户,供用户从中选择一项或多项。ListBox控件有两种工作模式:单选模式和多选模式。单选模式时,列表框与单选按钮的功能相同;多选模式时,则与复选框功能相同。所不同的是,需要多个RadionButton控件或CheckBox控件才能构造一个选项组。而使用ListBox控件,则只需要一个就可以生成一个选项列表。
表3 CheckBox控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Enabled |
指示是否启用该控件 |
|
Items |
列表框中的项目集合 |
|
ItemHeight |
列表框中项的高度 |
|
SelectionMode |
指示列表框将是单项、多项还是不可选择 |
|
事件 |
SelectedIndexChanged |
SelectedIndex属性值更改时发生 |
注意:当ListBox的SelectionMode的属性为MultiSimple或MultiExtended时,SelectedIndex返回的是选中的最小索引,SelectedItem返回的是选中的索引值最小的选项值。Items本身也包含很多属性,如Count属性指示Items包含项的个数等。
ComboBox,即下拉框控件,是由System.Windows.Forms.ComboBox类提供的,主要用于将一个集合数据以下拉列表框显示给用户,供用户从中选中一项。ComboBox控件的默认行为是显示一个可编辑文本框,该文本框具有一个隐藏的下拉列表框。ComboBox控件只支持单选,可替代RadioButton选项组。
表4 ComboBox控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Items |
列表框中的项目集合 |
|
事件 |
SelectedIndexChanged |
SelectedIndex属性值更改时发生 |
需求:设计一个注册界面,分别定义RadioButton控件显示性别,ComboBox控件显示城市;CheckBox控件显示技术方向;ListBox控件显示兴趣爱好。当用户单击“注册”按钮时,如果填写的信息完整,提示“注册成功!“;否则,提示”请填写全部信息“。
设计:
选择类控件包括单选按钮控件(RadioButton)、复选框控件(CheckBox)、列表框控件(ListBox)以及下拉框控件(ComBox)等。
(1)控件属性列表 作成
…
(2)功能设计
…
(3)运行结果和代码实现:
参考:https://blog.csdn.net/lubiaopan/article/details/5784846
Control类是Form和各种Windows 窗体控件设备的基类,属于System.Windows.Forms命名空间,每个window控件设备都有一个Controls属性,这个属性为ControlCollection类型,ControlCollection为一个Control对象的集合,包含的是属于某个控件的所有控件对象,利用Control和ControlCollection我们可以轻松地对某个窗体程序所含的各种控件进行控制。 当我们开发具有录入功能的界面的时候,为了防止提交后的二次(重复)录入,希望点击提交按钮并提示成功后,界面的所有文本框能够自动清空,一个笨方法是逐个的对TextBox进行Clear()操作,这种方法会产生大量的代码,并且效率很低。
对于上面所述的清空操作,可以仔细想一想,既然每个窗体控件都是继承自Control类,并且含有Controls属性,那利用Control和ControlCollection,利用函数的层层递归,就可以轻松实现Clear()操作,代码如下:...
原文链接:https://blog.csdn.net/lubiaopan/article/details/5784846
分组类控件包括 面板控件(Panel)、分组框控件(GroupBox)、选项卡控件(TabControl)等。
面板控件,由System.Windows.Forms.Panel类提供,主要用于将其它控件组合在一起放在一个面板上,使这些控件更容易管理。
表1 Panel控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Size |
控件的大小(以像素为单位) |
|
Location |
控件左上角对于其它容器左上角的坐标 |
|
AutoScroll |
指示当前控件内容大于它的可见区域时是否自动显示滚动条 |
|
BorderStyle |
指示面板是否有边框 |
|
事件 |
Paint |
在控件需要重新绘制时发生 |
Panel控件 代码实例
需求:使用Panel控件设计一个显示列表,当单击“增加”按钮时,列表框中增加一项“子项”,当列表框大小超出可见区域时将自动显示滚动条。
设计:
表2 用到的控件及其属性设置
窗体和控件 |
属性 |
属性值 |
Form4 |
Text |
面板 |
panel1 |
Name |
Panel |
AutoScroll |
True |
|
BorderStyle |
Fixed3D |
|
Button1 |
Name |
btnAdd |
Text |
增加 |
|
listBox1 |
Name |
lbxText1 |
运行结果和代码:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form4());
}
分组框控件,由System.Windows.Forms. GroupBox类提供,主要用于为其它控件提供可识别的分组。在窗体设计时,通常按功能把窗体划分为若干个区域,每个区域使用一个GroupBox控件表示。例如,把相关的各选项放入一个分组框,就可以为用户提供一个统一的外观或逻辑处理。
表2 GroupBox控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Text |
显示的文本 |
|
事件 |
Enter |
在控件成为该窗体的活动控件时发生 |
选项卡控件,由System.Windows.Forms. TabControl类提供,主要用于将相关的组件组合到一系列选项卡页面上,TabControl控件管理TabPages集合。
表3 TabControl控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
TabPages |
选项卡集合 |
|
Text |
选项卡显示的文本 |
|
Apperance |
指示选项卡是绘制成按钮还是绘制成常规选项卡 |
|
事件 |
Click |
单击事件 |
Panel控件 代码实例
需求:设计一个分组窗体,当单击“选项”组中的“选项一”或“选项二”按钮时,在“标签”组中将对应显示TabControl控件中的选项卡。
设计:…
运行结果和代码:
PictureBox,即图片框控件,是由System.Windows.Forms.PictureBox类提供,主要用于在应用程序中显示图片,图片框支持Bitmap、Gif、Jpg等多种图片格式。PictureBox控件的Image属性是一个Image类的值,Image类的对象用来保存图形信息,可以使用FormFile()方法将一个指定位置的图形文件加载到Image对象中。
表1 PictureBox控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Image |
图片路径 |
|
Size |
控件的大小(以像素为单位) |
|
SizeMode |
控件图片框将如何处理图像位置和控件大小 |
|
事件 |
Click |
单击事件 |
PictureBox控件 代码实例
需求:设计一个图片显示窗体,当单击“显示图片”按钮时,在图片框中将显示指定图像(图片路径自定义)
设计:
…
运行结果和代码:
在Main函数相应地中修改为,Application.Run(new Form6());
MenuStrip,即下拉菜单控件,是由System.Windows.Forms.MenuStrip类提供的,是应用程序菜单结构的容器。
表2 MenuStrip控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Text |
显示的文本 |
|
Items |
显示项的集合 |
|
事件 |
ItemClick |
当单击项时发生 |
在窗体界面编辑菜单栏的时候,点击 下三角 按钮 会出现如上图所示的三个选项:MenuItem、ComboBox、TextBox
通过ShorcutKeys,可为菜单添加快捷键,如上图所示
PictureBox控件 代码实例
需求:设计一个菜单窗体,当单击“窗体”菜单中窗体名时,将打开对应的窗体界面,当单击“退出”菜单时,将退出程序。
设计:
…
运行结果和代码:
Timer,即定时器控件,是由System.Windows.Forms.Timer类提供的。它是一个功能性控件,没有用户界面,主要用于在程序中按照时间间隔产生定时消息,然后执行消息代码。
表3 Timer控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Interval |
事件的频率(以毫秒为单位) |
|
Enabled |
是否产生定时消息 |
|
事件 |
Tick |
每当经过指定的时间间隔时发生 |
StatusStrip,即状态栏控件,是由System.Windows.Forms. StatusStrip类提供的,主要用于在应用程序中显示用户状态的简单信息,一般位于Windows窗体的底部。
表4 StatusStrip控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Text |
显示的文本 |
|
Items |
显示项的集合 |
|
事件 |
ItemClicked |
当单击项时发生 |
在状态栏中可以使用文字或图标显示应用程序的状态,也可以用一系列图标组成动画来表示正在进行某个过程。
可为状态栏添加的窗格控件有:StatusLabel、ProgessBar、DropDownButton、SplitButton等;
表5 窗格控件意义
名称 |
说明 |
StatusLabel |
表示StatusStrip控件中的一个面板 |
ProgessBar |
显示进程的完成状态 |
DropDownButton |
显示用户可以从中选择单个项关联的选项 |
SplitButton |
表示作为标准按钮和下拉菜单的一个组合控件 |
StatusStrip控件 代码实例
需求:设计一个窗体,在状态栏中显示当前时间。
设计:
运行结果和代码:
ProgressBar,即进度条控件,是由System.Windows.Forms.ProgressBar类提供的,主要用于表示进度。ProgressBar控件
表6 ProgressBar控件的常用属性和事件
类别 |
名称 |
用途 |
属性 |
Name |
指示代码中用来标识该对象的名称 |
Value |
进度条的当前值 |
|
Minimum |
进度条的范围下限 |
|
Maximum |
进度条的范围上限 |
|
事件 |
Click |
单击事件 |
ProgressBar控件 代码实例
需求:设计一个进度条窗体,程序运行时,显示进度,当进度值达到100时,提示“下载完毕!”。
设计:
运行结果和代码: