实用指南:第二阶段WinFrom-2:WinFrom常用控件介绍1
1_模态对话框和非模态对话框
(1)模态对话框(Modal Dialogue Box,又叫做模式对话框),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。一般来说,Windows应用程序中,对话框分为模态对话框和非模态对话框两种。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。
(2)非模态(Modeless)对话框,又叫做无模式对话框,当用户打开非模态对话框时,依然可以操作其他窗口。例如,Windows提供的记事本程序中的【查找】对话框。
(3)show()与showDialog()
Form.ShowDialog()方法 (窗体显示为模态窗体) ;Form.Show方法()方法 (窗体显示为非模态窗体);
Show()和Hide() 是一对,ShowDialog()和Close()是一对
项目 | Show()方法 | ShowDialog()方法 |
---|---|---|
名称 | 显示控件 | 显示对话框 |
关闭的对应方法 | Hide() 隐藏控件 | Close()关闭窗体 |
编辑显示效果 | 和主窗口平级,弹出子窗口后,两者可以任意切换到顶层和编辑。 | 比主窗口优先级高,弹出编辑子窗口只能编辑子窗口,子窗口独占顶层,只有关闭(close)返回后,用户才可以编辑主窗口。 |
理模显示理解 | 显示或隐藏控件,隐藏时并没有关闭,只是看不见,还存在。 | 打开等待关闭的对话框,打开就存在,关闭就清除,和messageBox类似,关闭等同于右上角的叉叉(×)。 |
(4)注意:
this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;
Application.Exit(); 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;
Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;
System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。
在主窗体的FormClosed事件使用System.Environment.Exit(0),终结一切!
2_MessBox 消息提示框
(1)消息框作用:显示消息向用户请求信息
(2)参数:
参数1:提示信息
参数2:窗口的标题
参数3:枚举类型,设置按钮的类型
参数4:枚举 设置消息提示框的 图标
参数5:设置默认的按钮
MessBox.show(String, String, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton);
MessageBox.Show("弹框");
MessageBox.Show("弹框","窗口的标题");
MessageBox.Show("弹框", "窗口的标题", MessageBoxButtons.YesNo);
MessageBox.Show("弹框", "窗口的标题", MessageBoxButtons.YesNo,MessageBoxIcon.Stop, MessageBoxDefaultButton.Button2);
MessageBoxButtons有以下样式:
属性 | 样式 |
---|---|
MessageBoxButtons.AbortRetryIgnore | ![]() |
MessageBoxButtons.OK | ![]() |
MessageBoxButtons.OKCancel | ![]() |
MessageBoxButtons.RetryCancel | ![]() |
MessageBoxButtons.YesNo | ![]() |
MessageBoxButtons.YesNoCancel | ![]() |
MessageBoxIcon有以下样式:
属性 | 样式 |
---|---|
MessageBoxIcon.Asterisk | ![]() |
MessageBoxIcon.Error | ![]() |
MessageBoxIcon.Exclamation | ![]() |
MessageBoxIcon.Hand | ![]() |
MessageBoxIcon.Information | ![]() |
MessageBoxIcon.Question | ![]() |
MessageBoxIcon.Stop | ![]() |
MessageBoxIcon.Warning | ![]() |
(3)Show() 方法会有一个返回值 就是用户的最终选择,返回值的类型是 DialogResult类型 枚举,根据:MessageBoxButtons.类型 返回一定的值
比如:MessageBoxButtons.YesNo 消息提示框 会显示 确认 和 取消 两个按钮 当用户点击确认 会返回DialogResult.Yes 如果用户点击的是取消 会返回DialogResult.No
MessageBoxButtons:OK, OKCancel, AbortRetryIgnore, YesNoCancel, YesNo, RetryCancel
DialogResult:None,OK,Cancel,Abort,Retry,Ignore, Yes,No
3_RadioButton 控件 单选框
(1)RadioButton 控件用于提供一组选项,用户可以从中选择一个。与 CheckBox 控件不同,RadioButton 控件通常用于表示一组互斥的选项,即用户一次只能选择其中一个选项。
(2)主要属性
属性 | 说明 | 值 |
---|---|---|
Text | 获取或设置显示在 RadioButton控件旁边的文本 | |
Checked | 获取或设置一个值,该值指示 RadioButton 是否被选中 | |
AutoSize | 获取或设置一个值,该值指示 RadioButton`是否根据其内容自动调整大小 | |
Appearance | 获取或设置 RadioButton 的外观。Normal(标准的 Windows 外观)或 Button(使 RadioButton`看起来更像是一个按钮)。 |
(3)主要事件
事件 | 说明 | |
---|---|---|
CheckedChanged | 当 Checked 属性的值更改时发生。这是处理用户选择更改的主要事件。 |
(4)RadioButton 单选框 互斥的 Checked 值是true和false true表示选中 false表示未被选中
同一个组单选框 是互斥的 也就是说 只能有一个单选框Checked 属性为true,如果当前单选框的Checked值为false,当点击的时候Checked会编程true 其他的都会变成false
多个单选框在同一个容器,是互斥的,只能选择一个,当需要多组单选框,就可以把他们放到不同的容器中 如:Panel
CheckedChanged 事件 当单选框的Checked 属性发生变化的时候执行
4_CheckBox 控件:复选框
(1)在C#的Windows窗体应用程序(WinForms)中,CheckBox控件允许用户通过勾选或取消勾选一个方框来做出选择。可以通过Visual Studio的设计视图(Design View)直接拖放CheckBox控件到窗体上,也可以通过编写代码来动态创建和配置CheckBox控件。
(2)属性和事件
属性/事件 | 说明 | |
---|---|---|
Text: | 复选框旁边的文本 | |
Checked | 设置复选框是否被选中(true/false) | |
CheckState | 复选框的状态(Checked, Unchecked, Indeterminate) | |
CheckedChanged | 复选框状态改变时触发的事件。 |
5_ListBox控件:列表框
(1)ListBox 组件是允许用户从一系列选项中选择一个或多个项目。ListBox 可以配置为单选或多选,这取决于其 SelectionMode属性。
(2)属性和事件
属性/事件 | 说明 | |
---|---|---|
Items | 列表框中的项集合 | |
SelectedIndex | 当前选中项的索引 | |
SelectedItem: | 当前选中的项 | |
SelectionMode: | 设置选择模式(如 Single, MultiSimple, MultiExtended)。 | |
SelectedIndexChanged: | 选中项改变时触发的事件。 |
(3)注意
SelectionMode
属性决定了ListBox
的选择行为。SelectionMode.None
表示不允许选择,SelectionMode.One
表示单选,SelectionMode.MultiSimple
允许使用鼠标或键盘选择多个项目但不支持Shift或Ctrl键进行范围选择或添加选择,SelectionMode.MultiExtended
允许使用鼠标和键盘(包括Shift和Ctrl键)进行多选。当
ListBox
设置为多选模式时,SelectedIndex
属性可能不再那么有用,因为它只返回最后一个选中的项目的索引。在这种情况下,你应该使用SelectedItems
集合来获取所有选中的项目。UI元素的修改(如向
ListBox
添加或删除项目)最好在UI线程上进行。如果你的代码在后台线程中运行并需要更新UI,请使用Control.Invoke
或Control.BeginInvoke
方法来确保UI更新在UI线程上执行。
6_ComboBox控件:下拉框
(1)ComboBox 允许用户从下拉列表中选择一个项。这个控件结合了文本框和列表框的特性,既可以让用户输入文本,也可以让用户从预设的选项中选择。不过,在大多数情况下,ComboBox 被用作一个简单的下拉列表选择框。
(2)属性和事件
属性/事件 | 说明 | |
---|---|---|
Items | 下拉框中的项集合 | |
SelectedIndex | 当前选中项的索引 | |
SelectedItem | 当前选中的项 | |
DropDownStyle | 设置下拉框的样式(如 DropDown, DropDownList) | |
SelectedIndexChanged | 选中项改变时触发的事件 | |
DropDown | 当下拉列表即将展开时触发 |
(3) 处理ComboBox事件
ComboBox 控件有几个重要的事件,如SelectedIndexChanged(当选中项改变时触发),DropDown(当下拉列表即将展开时触发),等等。
cb.SelectedIndexChanged += Gaibian;
public static void Gaibian(object sender, EventArgs e)
{
ComboBox cb = sender as ComboBox;
Console.WriteLine(cb.SelectedItem);
Console.WriteLine(cb.SelectedIndex);
}
(4) 访问ComboBox的选中项
你可以通过SelectedItem或SelectedValue(如果设置了DisplayMember和ValueMember属性)属性来访问ComboBox当前选中的项。
ComboBox cb = sender as ComboBox;
Console.WriteLine(cb.SelectedItem);
Console.WriteLine(cb.SelectedIndex);
7_NumericUpDown控件:数字选择器
(1)NumericUpDown 控件是一个用于输入数字的控件,它允许用户通过点击向上或向下的箭头来增加或减少数值,或者直接在文本框中输入一个数值。这个控件非常适合于需要用户输入一定范围内的数字的场景。
(2)属性
属性 | 说明 | |
---|---|---|
Name | 控件的名称,用于编程时引用 | |
Value | 当前选中的数值 | |
Minimum | 允许的最小值 | |
Maximum | 允许的最大值 | |
Increment | 每次点击增加或减少的步长 | |
DecimalPlaces | 如果允许小数,这里设置小数点后的位数 | |
ThousandsSeparator | 是否显示千位分隔符 | |
ValueChanged | 数值改变时触发的事件 |
(3)注意事项
NumericUpDown
控件的Value
属性是decimal
类型的,因此当你需要将其作为整数处理时,需要进行类型转换(如上面的(int)numericUpDown1.Value
)。但是,如果Value
属性包含小数部分,并且你将其转换为整数,小数部分将被截断。ValueChanged
事件在NumericUpDown
控件的值改变时触发。你可以通过编写事件处理程序来响应该事件,执行一些基于新值的操作。通过设置
Minimum
、Maximum
和Increment
属性,你可以控制用户能够输入的数字的范围和步长,这有助于确保用户输入的数据符合你的应用程序的要求。
9_PictureBox控件:图片框
(1)PictureBox组件允许在Windows窗体应用程序中显示图像。这个控件继承自 Control 类,因此它拥有所有控件的基本功能,比如可以设置位置、大小、可见性等。
(2)属性和事件
属性/事件 | ||
---|---|---|
Image | 显示的图片 | |
SizeMode | 设置图片的显示模式 | Normal StretchImage, Zoom |
BorderStyle: | 设置图片框的边框样式(如 | None, FixedSingle, Fixed3D |
(3)SizeMode属性的值:
Normal ——标准模式, 在此模式下, 图片位于PictureBox的左上角, 图片的大小由PictureBox控件的大小决定, 当图片的大小大于PictureBox的尺寸时, 多余的图像将被剪切掉
StretchImage——PictureBox会根据自身的长宽比例. 来调整图片的长宽比例, 使图片在PictureBox中完整显示出来, 此种模式中的图片可能会失真;
Zoom模式——将按照图片的尺寸比较缩放图片, 使其完整的显示PictureBox中. 此种模式下的缩放图片形状不会失真;
AutoSize模式——表示图片框会根据图片的大小自动调整自身的大小以显示图片的全部内容
CenterImage——使图片在PictureBox工作区的正中间, 当图片大于PictureBox的大小时, 就显示图片的中间部分
pictureBox.Image = Image.FromFile(@"D:\images\0001.PNG");
pictureBox.ImageLocation = @"D:\images\0001.PNG";
pictureBox1.Size = new Size(200, 150); // 设置宽度和高度
pictureBox1.Location = new Point(10, 10); // 设置左上角的位置
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; // 拉伸图片以适应PictureBox
// 或者使用其他SizeMode值,如AutoSize, CenterImage, Zoom等
10_ImageList组件:图片
(1)ImageList 组件用来存储和管理多个图像,并且这些图像可以被其他控件(如ListView、TreeView、ToolBar、ComboBox等)引用和使用。ImageList`提供了一种高效的方式来处理大量的图像,因为它减少了应用程序的内存占用,允许控件共享相同的图像实例。
(2)ImageList 一般不单独使用,一般是配合其他组件使用。 例如 配合 Label Button 等组件使用。
(2)属性和事件
属性/事件 | 说明 | |
---|---|---|
Images | 添加图像 | |
ColorDepth | 设置图像列表中的图像颜色深度 | |
ImageSize | 设置图像列表中所有图像的大小 | |
TransparentColor | 设置用作图像透明颜色的颜色 |