当前位置: 首页 > news >正文

第二阶段Winform-3:常用控件介绍2

0731知识点总结

1_Timer控件

(1)Timer 组件是一种常用的控件,用于在指定的时间间隔后执行某个操作或方法。Windows Forms 提供了两种不同类型的定时器,但当我们谈论“Timer 组件”时,通常指的是 System.Windows.Forms.Timer 类。

System.Windows.Forms.Timer 组件是专为 Windows Forms 应用程序设计的,它运行在 UI 线程上。这意味着当定时器触发时,它会直接在 UI 线程上执行回调方法(即 Tick 事件处理器),这使得更新UI控件(如标签、文本框等)变得非常简单和安全。然而,这也意味着如果回调方法执行时间过长,它可能会阻塞UI,导致应用程序界面响应迟缓。

(2)属性、事件和方法

属性/事件/方法说明
Internal时间间隔,以毫秒为单位
Tick事件经过指定的时间间隔发生
Start()启动Timer
Stop()停止Timer

(3)需要使用Start()方法Stop()方法和启动和停止Timer

timer1 = new Timer();
timer1.Interval = 1000;
timer1.Tick += timer1_Tick;
timer1.Start();
private void timer1_Tick(object sender, EventArgs e)
{MessageBox.Show("aaaa");
}

2_DateTimePicker 控件:日期时间选择器

(1) DateTimePicker控件允许用户从日期或时间列表中选择单个项。 用于表示日期时,它分为两部分显示:以文本表示日期的下拉列表,以及单击列表旁边的向下箭头时显示的网格。

(2)属性、事件和方法

属性/事件/方法说明
Value当前选中的日期和时间
Format设置日期和时间的显示格式Short, Long, Time,Custom
ShowCheckBox设置是否显示复选框以允许用户选择空值true/false
ValueChangeds事件日期或时间改变时触发的事件
public Form1()
{InitializeComponent();dateTimePicker = new DateTimePicker();
​dateTimePicker.Location = new Point(10,10);dateTimePicker.Size = new Size(200, 20);dateTimePicker.Format = DateTimePickerFormat.Long;//设置是否显示复选框  一般情况下 不需要显示复选框dateTimePicker.ShowCheckBox = false;
​//设置显示的时间dateTimePicker.Value = DateTime.Now;Controls.Add(dateTimePicker);//ValueChanged 当日期选择框中的Value发生改变的时候触发dateTimePicker.ValueChanged += Gaibian;
}
public void Gaibian(object sender,EventArgs e)
{MessageBox.Show($"您当前选择的日期时间是{dateTimePicker.Value.ToShortTimeString()}");
}

(3)注意事项

  • DateTimePicker 控件的 Value 属性表示当前选中的日期和时间。你可以通过修改这个属性来改变选中的日期时间,或者在用户改变选择时通过事件处理器来处理变化。

  • ValueChanged 事件在用户改变选中的日期或时间时触发。你可以在这个事件的事件处理器中执行基于新选择的日期时间的操作。

  • Format 属性允许你设置日期时间的显示格式。DateTimePickerFormat 枚举提供了几种预定义的格式选项,如 ShortLongTime 等。

  • ShowCheckBox 属性允许你控制是否显示一个复选框,以便用户可以清除他们的选择。然而,在大多数情况下,你可能不希望这样做,因此可以将此属性设置为 false

  • 默认情况下,DateTimePicker 控件允许用户通过日历控件选择日期,并通过文本框输入日期时间(尽管这取决于 FormatCustomFormat 属性的设置)。你可以通过禁用文本框的输入来限制用户只能通过日历控件选择日期时间,但这通常不是必要的,因为 DateTimePicker 已经提供了很好的输入验证。

3_MonthCalendar控件 日期显示

(1)indows 窗体 MonthCalendar 控件为用户查看和设置日期信息提供了一个直观的图形界面。 该控件以网格形式显示日历:网格包含月份的编号日期,这些日期排列在周一到周日下的七个列中,并且突出显示选定的日期范围。

4_ProgressBar组件 进度条

(1)ProgressBar 组件用于向用户显示某个操作的进度。它通常显示为一个水平条,其中填充的部分表示进度的百分比。ProgressBar 组件非常适合于长时间运行的操作,比如文件下载、数据处理等,因为它可以为用户提供视觉反馈,表明操作正在进行中且应用程序没有挂起。

(2)属性、事件、方法

属性/事件/方法说明
Minimum进度条的最小值,默认为0
Maximum进度条的最大值,默认为100。这表示进度条的完整长度。
Value进度条的当前值,它应该在 Minimum 和 Maximum之间
Style进度条的样式,可以是Blocks(默认,显示为一系列块)、Continuous(连续填充)、Marquee(一种特殊的动画效果,通常用于表示不确定的进度)

5_dataGridView控件 数据网格试图

(1)DataGridView控件是一个非常强大的工具,用于在Windows窗体应用程序中显示和操作表格数据。它提供了丰富的功能和灵活性,使得数据的展示、编辑、排序、筛选等变得简单直观。

(2)属性,事件,方法

属性/事件/方法说明
DataSource数据源,用于绑定数据
Columns数据网格中的列集合
Rows数据网格中的行集合
AllowUserToAddRows设置用户是否可以添加行(true/false)
AllowUserToDeleteRows设置用户是否可以删除行(true/false)
AutoSizeColumnsMode可见列自动调整大小
CellClick单元格被点击时触发的事件。

(3)手动添加行列

dataTable  = new DataTable();
dataTable.Columns.Add("ID");    
dataTable.Columns.Add("Name");    
dataTable.Columns.Add("Sex");    
dataTable.Columns.Add("Phone");    
dataTable.Rows.Add(1,"张三","男","1343");
dataTable.Rows.Add(2,"李四","男","1343");
dataTable.Rows.Add(3,"柳柳","女","1343");
dataTable.Rows.Add(4,"王武", "男", "1343");
dataTable.Rows.Add(5, "郑月", "女", "1343");

(4)设置数据的显示:如果已经通过数据源自动创建了列,并且只是想要修改某些属性(如列标题),可以直接通过Columns集合访问这些列

DataGridView dg =   new DataGridView();
dg.Size = new Size(440, 250);
dg.Location = new Point(10, 10);
Controls.Add(dg);
​
//自定义行和列
//显示的列DataGridViewTextBoxColumn idColumn= new DataGridViewTextBoxColumn();
idColumn.Name = "ID";
idColumn.HeaderText="ID";
idColumn.DataPropertyName = "ID";
idColumn.Visible = true;
​
DataGridViewTextBoxColumn NameColumn = new DataGridViewTextBoxColumn();
NameColumn.Name = "Name";
NameColumn.HeaderText = "Name";
NameColumn.DataPropertyName = "Name";
NameColumn.Visible = true;
​
DataGridViewTextBoxColumn stateColumn = new DataGridViewTextBoxColumn();
stateColumn.Name = "state";
stateColumn.HeaderText = "state";
stateColumn.DataPropertyName = "state";
stateColumn.Visible = true;
DataGridViewTextBoxColumn PhoneColumn = new DataGridViewTextBoxColumn();
PhoneColumn.Name = "Phone";
PhoneColumn.HeaderText = "Phone";
PhoneColumn.DataPropertyName = "Phone";
PhoneColumn.Visible = true;
​
dg.Columns.Add(idColumn);
dg.Columns.Add(NameColumn);
dg.Columns.Add(stateColumn);
dg.Columns.Add(PhoneColumn);
//DataGridView的实例对象 由一个DataSource 属性 用来设置数据源 
dg.DataSource = dataTable;

6_TreeView控件 树形试图

(1)TreeView 控件用于显示一个节点(或项)的层次结构,这些节点可以展开或折叠以显示或隐藏子节点。TreeView 控件非常适合于显示文件系统、组织结构图、分类列表等场景。

(2)属性、事件、方法

属性/事件/方法说明
Nodes:树形视图中的节点集合
SelectedNode当前选中的节点
ImageList设置树形视图节点图标的图像列表
AfterSelect节点被选中后触发的事件

(3)示例代码

 public Form1(){InitializeComponent();
​//创建一个根节点TreeNode rootNode =new TreeNode("根节点");
​//创建子节点TreeNode childNode1 = new TreeNode("子节点1");TreeNode childNode2 = new TreeNode("子节点2");
​TreeNode grandNode1 = new TreeNode("孙节点1");TreeNode grandNode2 = new TreeNode("孙节点2");TreeNode grandNode3 = new TreeNode("孙节点3");
​childNode2.Nodes.Add(grandNode1);childNode2.Nodes.Add(grandNode2);childNode2.Nodes.Add(grandNode3);
​rootNode.Nodes.Add(childNode1);rootNode.Nodes.Add(childNode2);rootNode.Nodes.Add(childNode3);treeView1.Nodes.Add(rootNode);
​//展开所有的节点treeView1.ExpandAll();}

7_ListView组件 列表视图

(1)ListView控件的常用属性:

属性说明
Name控件的名称
Items包含控件中所有项的集合
Columns控件中显示的所有列标题的集合
View控件的显示视图
LargeImageList当控件以大图标视图显示时使用的ImageList
SmallImageList当控件以小图标视图显示时使用的ImageList
GridLines在包含控件中的行和列之间是否显示网格线
MultiSelect是否可以选择多项
SelectedItems获取在控件选定的项
FullRowSelect单击某项是否选择其所有子项

(2)ListView控件的常用方法:

方法说明
Clear从控件中移除所有项和列,清空ListView

(3)ListView控件的常用事件:

事件说明
Click在单击ListView控件时触发
SelectedIndexChanged当选定项发生更改时触发

(4)ListView控件具有5种显示视图,由View属性设置,View属性的值及说明见下表:

属性值说明
Details详细视图,标准的二维表格,第一行为表头
LargeIcon(默认值)大图标,每一项显示为一个大图标
SmallIcon小图标,每一项显示为一个小图标
List列表,每项显示一行
Tile平铺,显示大图标,并在右侧显示详细信息

A. 详细视图(Details)

B. 大图标(LargeIcon)

C. 小图标(SmallIcon)

D. 列表(ImageList)

E.平铺(Tile)

(5)手动添加代码

public Form1() 
{InitializeComponent();ImageList imageList1 = new ImageList();ImageList imageList2 = new ImageList();
​listView1.LargeImageList=imageList1;listView1.SmallImageList = imageList2;
​listView1.View = View.Details;listView1.Columns.Add("名称");listView1.Columns.Add("修改日期");listView1.Columns.Add("类型");listView1.Columns.Add("大小");
​ListViewItem item1 = new ListViewItem("WIN");item1.SubItems.Add("2024/7/31");item1.SubItems.Add("文件夹");item1.SubItems.Add("2.2G");
​ListViewItem item2 = new ListViewItem("工作资料");item2.SubItems.Add("2024/7/31");item2.SubItems.Add("文件夹");item2.SubItems.Add("2.2G");ListViewItem item3 = new ListViewItem("个人资料");item3.SubItems.Add("2024/7/31");item3.SubItems.Add("文件夹");item3.SubItems.Add("2.2G");
​listView1.Items.Add(item1);listView1.Items.Add(item2);listView1.Items.Add(item3);//直接通过ListViewItem对象名删除
this.lvTimi.Items.Remove(item1);
//通过索引小标删除
this.lvTimi.Items.RemoveAt(0);
//通过键值对中的键删除,此处的键就是ListViewItem对象的name
this.lvTimi.Items.RemoveByKey("itemAjl");}

8_MenuStrip 组件 菜单条

(1)通常出现在应用程序的顶部。主要由菜单栏、主菜单、子菜单和快捷键组成。

(2)属性、方法、事件

属性/方法/事件说明
Items菜单项集合
Text菜单项的文本
ShortcutKeys设置菜单项的快捷键
Click菜单项被点击时触发的事件

9_ToolStrip 组件 工具栏

属性/方法/事件
Items工具栏项的集合
Text工具栏项的文本
Image工具栏项的图标
Click工具栏项被点击时触发的事件

10_StatusStrip组件 状态栏

(1)状态栏通常用于显示应用程序的系统信息。如操作员信息、软件版本号、当前日期和欢迎信息等。状态栏通常位于应用程序的窗口底部。

(2)

属性/事件/方法
Items状态栏项的集合
Text状态栏项的文本
Spring设置状态栏项是否自动填充剩余空间(true/false)

11_NotifyIcon 组件

(1)软件启动后会在系统右下角创建一个小图标,称为系统托盘,当软件在后台运行时,可以通过系统托盘对软件进行相关操作。

(2)属性和事件

属性/事件说明
Icon将在系统栏中显示的图标,必须为ico格式文件
Text当鼠标悬停在图标上时,显示的文本
ContentMenuScript与系统托盘图标相关联的右键快捷菜单
Click通知图标被点击时触发的事件
http://www.dtcms.com/a/342433.html

相关文章:

  • 算法题(187):程序自动分析
  • k8s集群限制不同用户操作
  • Windows 笔记本实现仅关屏仍工作:一种更便捷的 “伪熄屏” 方案
  • 基于Spring Cloud Gateway动态路由与灰度发布方案对比与实践指导
  • 哈希表知识总结
  • 风吸式杀虫灯在果园的作用
  • python的校园研招网系统
  • 面试题24:Spring循环依赖
  • 为什么可以kvcache
  • 8月21日作业
  • 【python实用小脚本-194】Python一键给PDF加水印:输入文字秒出防伪文件——再也不用开Photoshop
  • 文字识别——PDF OCR
  • electron-vite_19配置环境变量
  • 亚马逊站外推广效能重构:自然排名提升的逻辑与实操边界
  • 底层逻辑颠覆者:Agentic BI如何通过“Data + AI Agent”架构重构数据价值链?
  • 【C++】继承(详解)
  • 开心实习之第二十九天
  • Bartender 5 多功能菜单栏管理(Mac电脑)
  • NPM组件 @angular_devkit/core 等窃取主机敏感信息
  • 消息中间件选型分析:RabbitMQ vs RocketMQ vs Kafka
  • java生成带水印的pdf文件
  • 【从零构建企业级线程池管理系统:Python并发编程实战指南】
  • 医疗智能体高质量问诊路径开发:基于数智立体化三维评估框架(go语言)
  • [新启航]长轴深孔检测 - 激光频率梳 3D 轮廓检测
  • Go语言中的迭代器模式与安全访问实践
  • Linux应用层开发--线程池介绍
  • 【网络运维】Shell:变量数值计算
  • redis-缓存-双写一致性
  • 【Django:基础知识】
  • 掌控不平等的力量:深入解析帕雷托分布与二八法则的数学内核