Winform入门
WinForm常用控件
文本类控件
TextBox
主要用于在应用程序中接受用户输入的文字,他允许用户在其中输入任何字符,当然也可以输入某种类型的字符,如只允许输入汉字。
属性
名称 | 用途 |
---|---|
ScrollBars | 指定对于多行编辑控件,将为此控件显示哪些滚动条 |
PasswordChar | 隐藏用户输入的字符并显示 PasswordChar 属性指定的字符 |
UseSystemPasswordChar | 是否使用操作系统默认的密码字符圆点(•) |
ReadOnly | 是否为只读 |
Multiline | 能否跨越多行 |
事件
TextChanged事件:当文本框中的文本内容改变时发生,可以用来实现实时文本输入的反馈、文本的格式化处理等功能。
KeyPress事件:当用户在文本框中按下某个键时发生,可以用来限制用户输入的字符类型、控制输入字符的长度等功能。
KeyDown事件:当用户在文本框中按下某个键时发生,可以用来响应特定的键盘操作,如 Ctrl+C/Ctrl+V 复制粘贴等。
KeyUp事件:当用户在文本框中松开某个键时发生,可以用来响应特定的键盘操作,如 Ctrl+A 全选等。
MouseClick事件:当用户在文本框中单击鼠标时发生,可以用来实现特定的鼠标操作,如右键菜单等。
Enter事件:当用户进入文本框时发生,可以用来设置文本框的默认值、清空文本框内容等。
Leave事件:当用户离开文本框时发生,可以用来验证用户输入的内容、对输入进行格式化处理等。
RichTextBox
RichTextBox 是 .NET Framework 提供的一个控件,它是一个文本框,除了可以像普通文本框一样输入和显示文本外,还可以设置文本的字体、颜色、大小、样式等属性。它支持 RTF(Rich Text Format)格式,允许在文本中插入图片、表格、超链接等内容,使得富文本编辑变得简单。
RichTextBox 控件也可以在 .NET Core 环境中使用。.NET Core 提供了基于 WPF(Windows Presentation Foundation)的 RichTextBox 控件,它支持与 .NET Framework 中的 RichTextBox 控件类似的功能,可以用于显示和编辑富文本内容。
需要注意的是,在 .NET Core 中使用 RichTextBox 控件时,可能会出现兼容性问题或功能差异,因此建议在实际使用中进行充分测试和验证,以确保功能和性能满足需求。
选择类控件
选择类控件是指可以用来选择或输入特定值或数据的用户界面控件。常见的选择类控件包括:
- ComboBox(下拉列表框):ComboBox 可以显示一个下拉列表,其中包含一组选项,用户可以通过下拉列表中的选项来选择或输入数据。
- ListBox(列表框):ListBox 可以显示一组列表项,用户可以通过单击列表项来选择其中的一个或多个项。
- CheckBox(复选框):CheckBox 可以显示一个复选框,用户可以通过选中或取消选中复选框来选择或取消选择一个选项。
RadioButton(单选按钮)
RadioButton 可以显示一组互斥的选项,用户可以通过单选按钮来选择其中的一个选项。
属性
Checked:设置或获取单选按钮的选中状态。
AutoSize:指定控件是否根据自身大小以适应其内容的大小
事件
CheckedChanged:当单选按钮的选中状态发生改变时发生。
CheckBox控件(复选列表框)
CheckedListBox 可以显示一组列表项,每个列表项前面都有一个复选框,用户可以通过选中或取消选中复选框来选择其中的一项或多项。
CheckState属性用于获取或设置复选框的选中状态,它的取值包括:Checked:表示复选框被选中。Unchecked:表示复选框未被选中。Indeterminate:表示复选框处于不确定状态。
Indeterminate 状态也可以用于表示下属的选项部分选中。举个例子,如果有一个父级复选框,它有多个子级复选框,当父级复选框的状态为 Indeterminate 时,这表示有些子级复选框被选中了,但不是全部被选中。这种情况下,父级复选框通常会显示一个“半选中”的状态,以提示用户并让其知道不是所有子级选项都被选中。
ListBox(列表框)
ListBox 可以显示一组列表项,用户可以通过单击列表项来选择其中的一个或多个项。
分组类控件
Panel面板控件
Panel是一个Windows Forms控件,它是一个容器控件,用于在其中包含其他控件。它类似于一个容器,可以用来组织和布局其他控件。
Panel控件有许多属性,如BackColor、BorderStyle、Padding等,可以用来设置面板的背景颜色、边框样式和内部间距等。它还可以用来设置滚动条,当面板中的内容超出了面板的边界时,可以通过滚动条来查看内容的其余部分。
Panel控件还具有一些事件,如Click、DoubleClick、MouseEnter、MouseLeave等,可以用来响应用户操作,实现一些交互功能。例如,可以在Click事件中打开一个新的窗口,或者在MouseEnter事件中显示一些提示信息。
GroupBox分组框控件
GroupBox是Windows Forms中的一个容器控件,通常用于对其他控件进行分组或分类。GroupBox在界面上呈现为一个矩形框,包含一个标题,可以在标题前面放置一个小图标或者放置其他控件,如RadioButton等。
GroupBox常用属性:
Text:获取或设置GroupBox的标题。
Font:获取或设置GroupBox的字体。
ForeColor:获取或设置GroupBox的前景色(文本颜色)。
BackColor:获取或设置GroupBox的背景色。
GroupBox常用事件:
Enter:当用户输入焦点进入控件时发生。
Leave:当用户输入焦点离开控件时发生。
Paint:当控件需要被重绘时发生。
TabControl选项卡控件
TabControl选项卡控件是一种常用的用户界面控件,用于在一个窗体或容器中显示多个相关视图。它通常由多个选项卡组成,每个选项卡上显示不同的内容。当用户单击不同的选项卡时,选项卡控件会显示相应的内容。
TabControl控件提供了许多属性和方法来自定义和管理选项卡,包括添加、删除和重命名选项卡、更改选项卡的顺序和样式,以及处理与选项卡相关的事件等。常用的一些事件包括:
Selecting:在用户选择选项卡之前发生。
Selected:在用户选择选项卡之后发生。
Deselecting:在用户取消选择选项卡之前发生。
Deselected:在用户取消选择选项卡之后发生。
使用TabControl控件可以方便地实现选项卡式的多视图界面,是开发桌面应用程序时常用的控件之一。
其他控件
PictureBox图片框控件
Image:PictureBox控件显示的图像。可以使用Image属性加载图像文件,也可以使用代码从内存中创建图像并将其分配给Image属性。
C:\Images\picture.jpg
Images\picture.jpg
https://lczyyds.github.io/img/love.jpg
SizeMode:设置PictureBox控件中图像的显示方式。常见的选项包括AutoSize,StretchImage,CenterImage,Zoom等等。
Normal:图片按照原始大小在控件中显示。如果图片大于控件大小,则图片会被裁剪。
StretchImage:图片会被拉伸或缩小以适应控件大小。这种方式可能会导致图片变形。
AutoSize:控件的大小自动适应图片的大小。
CenterImage:图片在控件中居中显示,周围留有空白。
Zoom:控件的大小不变,图片按比例缩放以适应控件大小。这种方式不会导致图片变形。
Tile:如果图片小于控件大小,则会在控件中重复平铺。如果图片大于控件大小,则只显示部分图片。
MenuStrip菜单控件
MenuStrip是Windows Forms中的一个菜单控件,可以用于创建菜单和子菜单,常见于Windows应用程序中的菜单栏。通过MenuStrip,可以方便地添加、删除和管理菜单项,以及为这些菜单项添加单击事件等交互功能。
MenuStrip控件的常用属性包括:
Items:获取菜单项的集合。可以通过该属性来添加、删除、查找和管理菜单项。
Dock:获取或设置控件停靠在其父控件中的边框。设置为Top时,MenuStrip会显示在窗体的顶部,作为菜单栏。
BackColor:获取或设置控件的背景颜色。可以用于美化菜单的外观。
ForeColor:获取或设置控件的前景颜色。可以用于美化菜单的外观。
Font:获取或设置在控件中显示的文本的字体。可以用于设置菜单项的字体。
在使用MenuStrip控件时,还需要了解其SizeMode属性,用于指定菜单项的大小调整方式。常见的SizeMode属性值包括:
Normal:默认值,菜单项的大小由文本和图标决定。
Stretch:菜单项的大小会拉伸以填充整个菜单栏,忽略文本和图标的大小。
AutoSize:菜单项的大小由文本和图标自动调整。
此外,MenuStrip控件还提供了一些常用的事件,例如Click、DropDownOpening和DropDownClosed等,用于在用户与菜单交互时触发相应的处理逻辑。
shortcutkey快捷指令
Timer定时器控件
StatusStrip状态栏控件
StatusStrip 控件可以包含多个控件,如 StatusLabel、ProgressBar、DropDownButton、SplitButton 等。这些控件用于在状态栏上显示各种信息,例如程序的执行进度、当前时间、错误信息等。
StatusLabel:用于在状态栏上显示文本信息。
ProgressBar:用于在状态栏上显示进度条信息。
DropDownButton:用于在状态栏上显示下拉菜单。
SplitButton:用于在状态栏上显示下拉菜单和分隔符。
ProgressBar进度条控件
ProgressBar 是一个用于显示进度的控件,常用于长时间运行的任务中,可以告诉用户任务的进度情况,让用户知道任务还需要多长时间才能完成。
ProgressBar 常用属性:
Value:ProgressBar 的当前值,可以设置该属性来改变 ProgressBar 的进度值;
Minimum:ProgressBar 的最小值;
Maximum:ProgressBar 的最大值;
Step:每次增加的进度值。
ProgressBar 常用方法:
PerformStep():增加 ProgressBar 的值,增加的值由 Step 属性指定;
Increment(Int32 value):增加 ProgressBar 的值,增加的值为 value;
Reset():将 ProgressBar 的值重置为 Minimum 属性指定的值。
ProgressBar 常用事件:
ValueChanged:ProgressBar 的值改变时发生的事件。
使用 ProgressBar 的基本流程是:首先设置 ProgressBar 的 Minimum 和 Maximum 属性来确定 ProgressBar 的取值范围,然后使用 PerformStep() 或 Increment() 方法来增加 ProgressBar 的值,最后使用 ValueChanged 事件来监测 ProgressBar 的值是否已经达到了最大值,从而完成任务的进度显示。
Windows通用对话框
消息对话框
Windows窗体对话框中的消息对话框是一种常用的用于向用户显示信息、警告或错误的控件,通常在应用程序中用于向用户提供一些提示或提醒。
MessageBox.Show()的参数
参数 | 含义 |
---|---|
message | 要显示的文本消息。 |
caption | 对话框标题。 |
buttons | 消息框中要显示的按钮。该参数是MessageBoxButtons类型的枚举值,常用的值有OK、OKCancel、YesNo、YesNoCancel等。 |
icon | 要显示的图标。该参数是MessageBoxIcon类型的枚举值,常用的值有Information、Warning、Error、Question等。 |
defaultButton | 消息框的默认按钮。该参数是MessageBoxDefaultButton类型的枚举值,常用的值有Button1、Button2、Button3等。 |
options | 其他选项。该参数是MessageBoxOptions类型的枚举值,常用的值有DefaultDesktopOnly、ServiceNotification等。 |
其中,message和buttons参数为必填项。 | |
下面是当用户关闭窗口时的举例 |
1 | private void Form4_FormClosing(object sender, FormClosingEventArgs e) |
文件对话框
文件对话框(FileDialog)是 Windows 窗体应用程序中常用的一个控件,用于让用户选择文件或保存文件,常见的文件对话框有打开文件对话框(OpenFileDialog)和保存文件对话框(SaveFileDialog)。
OpenFileDialog
SaveFileDialog
普通对话框
Windows 窗体设计
以下是winform实现多页面的几种常见方法:
- 使用多个窗体:每个页面对应一个单独的窗体,通过主窗体调用打开子窗体的方式来实现多页面的效果。这种方式比较简单,但是会出现多个窗体并存,可能会导致窗体之间的数据传递和交互比较麻烦。
- 使用TabControl控件:在一个窗体中添加一个TabControl控件,在TabControl中添加多个TabPage选项卡页来实现多页面的效果。这种方式比较简单,可以通过选项卡页的切换来实现页面的切换,但是当选项卡页较多时,可能会影响用户体验。
- 使用Panel控件:在一个窗体中添加一个Panel控件作为容器,通过控制Panel控件中的子控件来实现多页面的效果。这种方式比较灵活,可以动态添加和删除页面,但是需要编写代码来控制子控件的显示和隐藏。
- 使用MDI窗体:MDI全称为Multiple Document Interface,即多文档界面,它是Winform中实现多文档的一种方式。在MDI窗体中可以打开多个子窗体,每个子窗体对应一个页面,可以通过菜单或者工具栏来实现页面的切换,同时可以在MDI窗体中显示子窗体的缩略图,方便用户快速切换页面。
使用Panel控件
假设有一个主窗体Form4,还有三个子窗体Form1、Form2、Form3,Form4中有三个按钮,还有一个panel,名为panelPages。
你可以按照以下步骤使用按钮来实现在Form4窗体的一个区域中显示不同的子窗体:
- 将Form1-3的“FormBorderStyle”属性设置为“None”,将panel的BorderStyle设置为FixedSingle。
为三个按钮分别添加Click事件处理程序,将以下代码添加到事件处理程序中:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30private void btnForm1_Click(object sender, EventArgs e)
{
panelPages.Controls.Clear();//清空panelPages控件中所有已有的子控件,以便放置新的控件。
Form1 form1 = new Form1();
form1.TopLevel = false;//创建一个Form1对象,并将其TopLevel属性设置为false,表示该窗体不是顶级窗体(即不是独立窗口),可以被添加到其他控件中。
form1.Dock = DockStyle.Fill;//将Form1对象的Dock属性设置为Fill,表示将该窗体铺满panelPages控件。
panelPages.Controls.Add(form1);//将Form1添加到panelPages控件中。
form1.Show();//调用Form1对象的Show()方法,显示Form1窗体。
}
private void btnForm2_Click(object sender, EventArgs e)
{
panelPages.Controls.Clear();
Form2 form2 = new Form2();
form2.TopLevel = false;
form2.Dock = DockStyle.Fill;
panelPages.Controls.Add(form2);
form2.Show();
}
private void btnForm3_Click(object sender, EventArgs e)
{
panelPages.Controls.Clear();
Form3 form3 = new Form3();
form3.TopLevel = false;
form3.Dock = DockStyle.Fill;
panelPages.Controls.Add(form3);
form3.Show();
}
基于多文档的窗体设计
在Windows窗体设计中,单文档(Single Document)和多文档(Multiple Document)是两种常见的应用程序界面设计风格。
单文档界面通常用于处理一个文档,例如Microsoft Word。在单文档界面中,所有文档都在同一个窗口中打开,并且只能编辑一个文档。单文档界面通常包括一个菜单栏、工具栏和状态栏,用于帮助用户管理文档内容。
多文档界面则通常用于处理多个文档,例如Microsoft Excel。在多文档界面中,每个文档都在一个单独的窗口中打开,并且可以同时编辑多个文档。多文档界面通常包括一个主窗口和多个子窗口,其中每个子窗口都是一个单独的文档。
在Windows窗体设计中,可以通过使用标签页控件(TabControl)来实现多文档界面。每个标签页可以包含一个不同的文档,用户可以通过单击标签页来切换到相应的文档。
其他
在设计器中选中 Label 控件,然后将其 AutoSize 属性设置为 True。这将使 Label 控件根据其文本内容自动调整大小。如果您想要保持 Label 控件的大小不变,请将其 AutoSize 属性设置为 False,并手动设置其 Width 和 Height 属性。