WPF中的内容控件

控件分类

在第一篇文章.Net Core和WPF介绍中的WPF的功能和特性部分根据功能性介绍了WPF的控件 名称。

在接下来的文章中,将会详细的介绍各个控件的概念及使用。

主要包括:

内容控件:Label、Button、CheckBox、ToggleButton、RadioButton、ToolTip和ScrollViewer

带有标题的内容控件:TabItem、GroupBox、Expander

导航控件:Frame、TabControl、Page

窗体控件:Window

文本控件:TextBox、PasswordBox、RichTextBox

列表控件:ListBox和ComboBox

基于范围的控件:Slider和ProgressBar

日期控件:Calender和DatePicker

媒体控件:Image和MediaElement

System.Windows.Controls.Control类

控件通常在描述为与用户交互的元素,也就是能接收焦点并接受键盘或鼠标输入的元素。

在WPF中,所有控件都是继承自System.Windows.Controls.Control类。这个类定义了一小部分基本的基础结构:

Background和Foreground

背景画刷和前景画刷,使用System.Windows.Media.Brush对象,常用的有System.Windows.Media.SolidColorBrush,System.Windows.Media.TileBrush,System.Windows.Media.LinearGradientBrush等

BorderBrush

用于填充控件的边框的画刷,使用System.Windows.Media.Brush对象

BorderThickness

获取或设置控件的边框宽度

FontFamily

获取或设置字体名称,使用System.Windows.Media.FontFamily对象

FontSize

获取或设置字体大小,使用Double类型

FontStretch

获取或设置字体的拉伸或压缩程度,使用System.Windows.FontStretch 结构,可以从System.Windows.FontStretches类的静态属性中获取需要的预定义FontStretch对象

FontWeight

获取或设置指定字体的粗细

HorizontalContentAlignment

设置元素水平方向相对于父元素的位置,使用System.Windows.HorizontalContentAlignment枚举值

VerticalContentAlignment

设置元素垂直方向相对于父元素的位置,使用System.Windows.VerticalContentAlignment枚举值

内容控件(ContentControl)

内容控件可以包含并显示内容。但只能有一个子元素。

类继承结构示意图如下

Content属性

内容控件最重要的就是Content属性,用于设置控件的内容。

Content支持所有类型的对象。但根据对象继承类的不同,呈现方式也有所不同。

未继承 自System.Windows.UIElement:获取对象的ToString()方法返回来文本来设置Content

继承自System.Windows.UIElement:调用UIElement.OnRender()方法在内部进行显示

下面使用Label控件,来进行演示

设置Content属性为普通的字符串

1  <Label>HelloWorld</Label>

设置Content属性为DateTime对象

1 <Label xmlns:sys="clr-namespace:System;assembly=mscorlib" Grid.Row="1">
2             <sys:DateTime>2020.09.21</sys:DateTime>
3 </Label>

设置Content属性为Image对象

1 <Label>
2        <Image Source="4.jpg" />
3 </Label>

设置Content属性为布局容器,这种方式在为控件设置样式时,会经常用到。

1 <Label Grid.Row="2">
2             <Grid>
3                 <Label Content="HelloWorld" HorizontalAlignment="Center" VerticalAlignment="Center" Panel.ZIndex="1"></Label>
4                 <Image Source="4.jpg" HorizontalAlignment="Center" VerticalAlignment="Center"/>
5             </Grid>
6 </Label>

有了前面的基础,下面开始介绍具体的内容控件

Label控件

Label是最简单的内容控件,通常会使用Label来放置一些静态文本。

在前面的介绍中已经对Label控件的使用做了一些演示。

下面介绍一下Label的Target属性,Target属性可以获取或设置当用户按下标签的访问键时获得焦点的元素。

1 <StackPanel>
2         <Label Target="{Binding ElementName=tboxA}" Content="Choose _A"></Label>
3         <TextBox Name="tboxA"></TextBox>
4 </StackPanel>

_A代表快捷键Alt+A,当按下快捷键时,TextBox会获得焦点

Label的常规用法

1 <Grid Grid.Row="0">
2             <Label Content="Visual Studio 2015" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="30" Foreground="White"/>
3 </Grid>

按钮控件

常用的按钮控件有三种:Button、CheckBox和RadioButton。它们都继承自ButtonBase类。

ButtonBase类定义了Click(单击)事件以及ClickMode,ClickMode属性用于决定何时引发Click事件以响应鼠标动作。默认值 是ClickMode.Release,代表鼠标按键释放时引发Click事件,除此之外,还可以设置Press(按下)、Hover(滑过)等值

Button控件

Button就是我们平常见到的常规按钮,像这样

Button的常规用法

1  <Button Content="Cancel" VerticalAlignment="Center" Width="88" Margin="5" Click="Button_Click"></Button>

Button增加了两个属性:IsCancel和IsDefault

IsCancel:如果设置了IsCancel为True,则该按钮就变成了窗口的取消按钮,按下Esc,会触发按钮事件

IsDefault:如果设置了IsDefault为True,则该按钮就变成了窗口的确定按钮,当焦点不在窗口内时,按下Enter,会触发按钮事件。

说明:

1、IsCancelIsDefault属性在一个窗体只使用一次,也就是一个不要将多个按钮的IsDefault或IsCancel属性设为True

ToggleButton控件

ToggleButton包含了按下和未按下两种状态。单击ToggleButton按钮时,会使按钮保持按下状态,再点单击,会使按钮释放。效果如下:

ToggleButton控件不常用,被定义在 System.Windows.Controls.Primitives 命名空间下

ToggleButton包含了一个选中事件(Checked)和取消选中事件(UnChecked),常规使用方法如下:

1  <ToggleButton Content="Button1" Width="88" HorizontalAlignment="Left" Margin="5" Checked="ToggleButton_Checked" Unchecked="ToggleButton_Unchecked"/>

ToggleButton还包含了一个用于设置或获取选中的状态的属性IsChecked,以及是否能将复选框设置为不确定状态的IsThreeState属性(IsThreeState属性在ToggleButton中效果不明显,在CheckBox可以看到明显的效果)

说明:

1、ToggleButton在触发Checked、UnChecked、Indeterminate(第三种状态)三个事件时,都会触发Click事件 

2、需要将ToggleButton设置为第三种状态,可以使用如下方式

1  <ToggleButton IsThreeState="True" Content="Three State" Margin="5" IsChecked="{x:Null}"/>

CheckBox控件

CheckBox继承自ToggleButton,所以CheckBox也包含了选中和未选中两种状态,只是呈现方式和ToggleButton稍有不同:

设置IsThreeState属性为true,并设置 IsChecked="{x:Null},效果如下:

CheckBox的常规用法

1 <CheckBox  Content="允许我保存凭据" Margin="5"/>

RadioButton控件

RadioButton继承自ToggleButton

RadioButton的常规用法

1 <RadioButton Content="Radio Button" Margin="5"/>

RadioButton增加了GroupName属性,对于设置为同一GroupName的多个RadioButton,只能有一个RadioButton被选中

1  <RadioButton Name="radioButton1" Content="1" GroupName="group1" Margin="5"/>
2  <RadioButton Name="radioButton2" Content="2" GroupName="group1" Margin="5"/>

上面的示例中,设置两个RadioButton的GroupName都为group1,设置后只能选中radioButton1或radioButton2,而不能同时选中。如果未设置相同的GroupName,则可以同时选中

其它用法和CheckBox一样,这里就不多做介绍

ToolTip控件

ToolTip就是提示信息控件,像Windows系统中,将鼠标放置在特定位置,可以看到提示文本

 

由于ToolTip是内容控件,所以可以放置任何可视化元素。像下面这样

ToolTip的常规用法

1 <Button Content="OK" ToolTip="OK"/>

1 <Button Content="Cancel">
2        <Button.ToolTip>
3               <ToolTip>OK</ToolTip>
4         </Button.ToolTip>
5 </Button>

ToolTip还有一些常用的属性,如下:

Placement 

ToolTip显示的位置,使用System.Windows.Controls.Primitives.PlacementMode枚举值。默认值是Mouse,即根据鼠标位置显示ToolTip。

HorizontalOffset和VerticalOffset

可以精确控制ToolTip的位置(支持正值和负值)

PlacementTarget

相对另一个元素定位ToolTip的显示位置。(需要使用PlacementMode的Left、Right、Top、Bottom或Center值)

IsOpen

可以使用代码控制ToolTip是否显示

ScrollViewer控件

内容控件不仅包括Label、Button及ToolTip等基本控件,还包含了特殊容器。ScrollViewer就是其中的一种。

ScrollViewer控件的作用就是让Content支持滚动

在下面的示例代码中:

在Grid中定义了两行,由于窗体高度是400,所以每一行的高度是200。

放置在第一行的Image控件,高度是250,并不能显示完全

放置在第二行的Image控件,位于ScrollViewer控件内部,高度也是250,也不能显示完全,但是出现了垂直滚动条

ScrollViewer的就作用就是当内容显示不完全时,出现滚动条,让内容支持滚动

 1 <Window x:Class="ScrollViewerDemo.MainWindow"2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"6         xmlns:local="clr-namespace:ScrollViewerDemo"7         mc:Ignorable="d"8         Title="MainWindow" Height="400" Width="300" ResizeMode="NoResize" WindowStyle="ToolWindow">9     <Grid>
10         <Grid.RowDefinitions>
11             <RowDefinition/>
12             <RowDefinition/>
13         </Grid.RowDefinitions>
14        
15         <Image Height="250" Source="4.jpg"/>
16 
17         <ScrollViewer Grid.Row="1">
18             <Image Height="250" Source="4.jpg"/>
19         </ScrollViewer>
20     </Grid>
21 </Window>

复制代码

常用属性

VerticalScrollBarVisibility

用于设置是否显示垂直滚动条,使用System.Windows.Controls.ScrollBarVisibility枚举值 ,如下:

Auto(默认):代表当内容超出时,显示滚动条,内容不超出时,隐藏滚动条。

Disabled:禁用滚动条

Visible:总是显示滚动条

Hidden:总是隐藏滚动条

HorizontalScrollBarVisibility

用于设置是否显示水平滚动条

常用函数

ScrollToEnd、ScrollToHome

控制滚动条滚动到底部和顶部

ScrollToVerticalOffset、ScrollToHorizontalOffset

控制垂直、水平滚动条滚动到特定位置

LineLeft、LineRight

控制水平滚动条向左滚动预先系统定义的值。(实际效果跟单击水平滚动条两端的按钮是一样的)

LineUp、LineDown 

控制水平滚动条向上、向下滚动一行。(实际效果跟单击垂直滚动条两端的按钮是一样的)

PageLeft、PageRight、PageUp、PageDown

控制水平滚动条向左、右、上、下滚动一页。(实际效果跟单击滚动条空白区域是一样的)

带有标题的内容控件

带有标题的内容控件继承自System.Windows.Controls.HeaderedContentControl类, 相比普通内容控件,它增加一些属性。最常用的是Header属性,用于显示标题内容。Header属性与Content属性一样,可以接受任何类型的对象。常用的带有标题的内容控件有TabItem、GroupBox、Expander等

TabItem控件

TabItem表示TabControl(后面会介绍TabControl控件)的一页。

TabItem的常规用法:

 1 <TabControl>2         <TabItem Header="TabItem1">3             <StackPanel>4                 5             </StackPanel>6         </TabItem>7         <TabItem Header="TabItem2" IsSelected="True">8             <Grid>9                 
10             </Grid>
11         </TabItem>
12 </TabControl>

TabItem的常用属性

IsSelected

代表当前Tab是否被选中(只能有一个Tab项被选中)

GroupBox控件

GrouBox显示为具有标题的方框

GroupBox的常规用法:

1 <GroupBox Margin="10" Header="Group Box">
2             <Grid>
3                 
4             </Grid>
5 </GroupBox>

Expander控件

Expander控件可以通过点击箭头按钮显示或隐藏所包含内容

Expander与常规内容控件不同的时,它可以被折叠起来,并且不占用布局空间。

可以通过ExpandDirection属性设置Expander展开的方向,该值使用System.Windows.Controls.ExpandDirection枚举,包含了Left(左)、Up(上)、Right(右)、Down(下)四个值。效果如下:

Expander控件在展开时会触发Expanded事件,在折叠时会触发Collapsed事件。

Expander的常规用法:

1 <Expander Header="Expander 1">
2             <Grid>
3                 <TextBlock Text="Expander is a HeaderedContentControl" VerticalAlignment="Center" FontSize="20"/>
4             </Grid>
5 </Expander>

导航控件

导航控件就是可以将一个页面切换到另一个页面的控件。像平常我们在上网时,点击一个链接可以跳转到另外一个页面,这就是导航模型的体现。

在WPF中,可以实现导航操作的常用控件有FrameTabControl、Page。

Page控件

Page类与Window类差不多,都是只能包含一个嵌套元素。然后,Page类不是内容控件,它直接继承自FrameworkElement类。

Page控件就是包含内容的页面,这个页面可以被放置在Windows Internet Explorer, NavigationWindow控件和Frame控件中,但是不能单独显示出来,必须要有容器。

添加Page的方法如下:

默认的标记如下:

 1 <Page x:Class="PageDemo.Page1"2       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"4       xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 5       xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 6       xmlns:local="clr-namespace:PageDemo"7       mc:Ignorable="d" 8       d:DesignHeight="450" d:DesignWidth="800"9       Title="Page1">
10 
11     <Grid>
12         
13     </Grid>
14 </Page>

Page的常用属性

Background

指定背景画刷

Content

页面中显示的单一内容,通常是布局窗口,如Grid,StackPanel等

NavigationService

返回NavigationService对象的引用,可通过代码使用该对象将用户导航到哪一个页面

KeepAlive

当页面跳转时,决定原来的页面是否保持存活状态。在下面的Frame控件中,也说会到这个属性

Page类还有一些其它特性,可以在示例代码中看到。如果需要了解Page类更详细的信息,可以访问文末的链接。

Frame控件

Frame控件是支持导航的内容控件。

Frame的常用属性

Source

指定当前页面内容的URI

1 <Frame Name="frame" Source="StartupPage.xaml"></Frame>

NavigationUIVisibility

设置导航条的可见性,使用System.Windows.Navigation.NavigationUIVisibility枚举值

Automatic 自动(默许值,只有当前进列表或后退列表中具有内容时才会显示导航条)

Hidden 隐藏导航条

Visible 总是显示导航条

CanGoBack和CanGoForward

判断是否能向后或向前导航

Frame的常用函数

Navigate

导航到指定的页面

1  this.frame.Navigate(new Uri("Pages/Page2.xaml", UriKind.Relative));

也可以创建页面进行导航,使用这种方式导航,整个对象会始终保存在内存中

1 Page1 page1 = new Page1();
2 this.frame.Navigate(page1);

在这里还可以有另外一种用法来进行导航,就是直接操作Frame控件的Content属性。

1 Page1 page1 = new Page1();
2 this.frame.Content = page1;

GoBack

在导航列表中向后移动

GoForward

在导航列表中向前移动

Frame的常用事件

Navigating

请求新导航时发生

Navigated

找到导航的目标内容且可通过 Content 属性得到这些内容时发生

LoadCompleted

当已加载、分析并开始呈现目标导航内容时发生

Frame导航执行过程图如下:

说明:

1、在WPF中进行页面导航时,会先触发页面的Initialized事件,再触发Loaded事件,如果需要在页面加载时执行指定操作,可以在Loaded事件中进行处理。

2、在WPF中进行页面导航时,会创建新的页面对象,如果需要保留对象,可以使用Page.KeepAlive="True"或者使用NavigationService.Navigate()的重载版本,直接传入页面对象。这种情况下,第二次导航时不会触发页面的Initialized事件。

TabControl控件

 表示包含多个项的控件,这些项共享屏幕上的同一空间。

TabControl继承自System.Windows.Controls.ItemsControl类,ItemsControl类在后面的文章中会介绍

TabControl的常规用法:

 1 <TabControl SelectedIndex="1">2             <TabItem Header="Tab item1" BorderBrush="Red" BorderThickness="1">3                 <StackPanel>4                     <Label Content="请输入用户信息"/>5                     <TextBox></TextBox>6                     <Button Content="确定" HorizontalAlignment="Right" Width="88" Margin="10"/>7                 </StackPanel>8             </TabItem>9             <TabItem Header="Tab item2">
10                 <Grid></Grid>
11             </TabItem>
12             <TabItem Header="Tab item3">
13                 <Grid/>
14             </TabItem>
15         </TabControl>

常用属性

SelectedIndex

获取或设置当前选中Tab项的索引,TabControl默认选中第一项,该值为0

常用事件

SelectionChanged

当Tab项切换时发生

还有一些属性和函数等后面介绍 ItemsControl类的时候再介绍。

推荐阅读:

Placement枚举值介绍

PlacementMode Enum (System.Windows.Controls.Primitives) | Microsoft Learn

Page控件

Page Class (System.Windows.Controls) | Microsoft Learn

Frame控件

Frame Class (System.Windows.Controls) | Microsoft Learn

示例代码

https://github.com/zhaotianff/DotNetCoreWPF/tree/master/六、WPF中的常用控件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1558392.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

几何建模基础-拓扑结构介绍

1.什么是拓扑&#xff1f; 拓扑是研究几何图形或空间在连续改变形状后还能保持不变的一些性质的一个学科。它只考虑物体间的位置关系而不考虑它们的形状和大小。 Body对象的拓扑可以理解为面&#xff08;Face&#xff09;与边&#xff08;Edge&#xff09;、边&#xff08; E…

fmql之Linux设备驱动框架

设备驱动框架 正点原子第39章---LED驱动框架 测试 成功&#xff1a; 贴代码 &#xff08;不需要测试APP&#xff09; /***************************************************************Copyright © ALIENTEK Co., Ltd. 1998-2029. All rights reserved.文件名 : le…

Copilot重磅更新!OneDrive全新功能炸裂

今天早上一打开onedrive&#xff0c;就发现了弹窗提醒&#xff0c;它&#xff0c;终于来了&#xff1a; copilot in onedrive全新功能来袭&#xff01; 当我们在onedrive中随意选择一个文件&#xff0c;顶部功能栏便出现了copilot按钮&#xff1a; 点击按钮后出现三个选项&…

Tauri 2.0 稳定版发布

Tauri 2.0 稳定版发布 Tauri 是什么&#xff1f; Tauri 应用程序的前端使用您喜欢的 Web 前端栈编写。它在操作系统的 WebView 中运行&#xff0c;并与主要用 Rust 编写的应用核心进行通信。 我何时应该使用 Tauri&#xff1f; 如下任一一项符合&#xff0c;你应该使用 Ta…

立体扬声器棒球帽专利TRO维权,速查避免踩坑

案件基本情况起诉时间&#xff1a;2024-9-18案件号&#xff1a;24-cv-08626原告&#xff1a;Audiowear Technology Corporation原告律所&#xff1a;Loza & Loza, LLP起诉地&#xff1a;伊利诺伊州北部法院品牌介绍Audiowear Technology Corporation&#xff0c;一家位于特…

SpringMVC框架:入门讲解和基础案例解析

Spring Web MVC是什么&#xff1f; Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架。使用了MVC架构模式的思想&#xff0c;将web层进行职责解耦&#xff0c;基于请求驱动指的就是使用请求-响应模型 。框架的目的就是帮助我们简化开发&…

嵌入式设备硬件和软件安全设计

1. 引言 哪个领域的网络安全实施记录最差&#xff1f; 既不是 PKI/数字证书&#xff0c;也不是 密钥管理&#xff0c;也不是 OAuth。很可能是嵌入式设备和物联网 领域。 总的来说&#xff0c;这似乎是一个梦想&#xff0c;但如果可设计出“设计安全”的系统&#xff0c;而不…

DHCP Snooping典型配置举例(如何防止路由器乱接问题)

全局开启DHCP Snooping配置举例 组网需求 Router B通过以太网端口Ten-GigabitEthernet0/0/6连接到合法DHCP服务器&#xff0c;通过以太网端口Ten-GigabitEthernet0/0/8连接到非法DHCP服务器&#xff0c;通过Ten-GigabitEthernet0/0/7连接到DHCP客户端。要求&#xff1a; 与合…

各省常住人口及人口密度面板数据(2000-2022年)

常住人口指在某地区居住超过一定时间&#xff08;通常为半年以上&#xff09;的人口&#xff0c;而人口密度则指每平方千米或每公顷内的常住人口数。数据集的主要指标包括&#xff1a; 省份年份常住人口&#xff08;万人&#xff09;人口密度&#xff08;人/平方公里&#xff…

每日学习一个数据结构-图

文章目录 图基础一、图的定义二、图的相关概念三、图的分类四、图的使用场景 和图相关的算法一、图的遍历算法二、最短路径算法三、最小生成树算法四、图匹配算法五、网络流算法 图基础 一、图的定义 在数学中&#xff0c;图是描述于一组对象的结构&#xff0c;其中某些对象对…

宠物咖啡馆业务自动化:SpringBoot框架的实现方法

3系统分析 3.1可行性分析 通过对本基于Spring Boot的宠物咖啡馆平台的设计与实现实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本基于Spring Boot的宠物咖啡馆…

(11)(2.1.4) DroneCAN ESCs

文章目录 前言 1 DroneCAN ESC列表 2 连接到飞行控制器 3 自动驾驶仪设置 4 记录和报告 5 附加资料 前言 Copter、Plane 和 Rover 支持 DroneCAN 电子速度控制器&#xff08;ESC&#xff09;&#xff0c;该控制器允许与自动驾驶仪进行双向通信&#xff0c;从而可能更容易…

数据库管理-第250期 深入浅出多主多活数据库技术- Cantian存储引擎(一)(20241009)

数据库管理250期 2024-10-09 数据库管理-第250期 深入浅出多主多活数据库技术- Cantian存储引擎&#xff08;一&#xff09;&#xff08;20241009&#xff09;1 简介2 引擎构成3 引擎架构4 文件分布5 分布式MVCC6 限制/要求总结 数据库管理-第250期 深入浅出多主多活数据库技术…

EtherCAT学习笔记

文章目录 前言一、EtherCAT介绍二、EtherCA系统组成2.1 ESC(EtherCAT从站控制器)2.2 从站控制微处理器2.3 物理层器件2.4 其它应用层器件 三、EtherCAT数据帧结构3.1 寻址方式3.2 时钟3.3 通信模式 四、状态机和通信初始化五、应用层协议六、ESC概述6.1 EtherCAT从站控制芯片6.…

02_InFluxDb

InFluxDb 初始化初始化流程 交互InFluxDbWebUI交互 数据模型行协议添加标签数据格式 数据类型空格索引 初始化 初始化流程 用户 密码 组织名称 Bucket—mysql里面的数据库概念 交互InFluxDb 暂用了8086端口.提供了 http api WebUI交互 略... 数据模型 这是mysql里面的表…

基于SSM的电脑硬件库存管理系统【附源码】

基于SSM的脑硬件库存管理系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1 设计原则 4.2 功能结构设计 4.3 数据库设计 4.3.1 数据库概念设计 4.3.2 数据库物理设计 第5章 系统实现 5.1 管理员功能实现 5.1.1 硬件管理 5.1…

Java开发者测试:Junit5

Java开发者测试 实际代码编写中所用到的单元测试框架基本是Junit结合Mockito使用 Junit spring自带的单元测试框架,涵盖了大部分功能 通过Test注解即可直接生成测试用例 Test public void calTest(){Assert.assertEquals(junit.cal(1,2),3); }BeforeAll 表明在所有测试方法…

learn C++ NO.21——AVL树

简单介绍一下AVL树 AVL树是一种自平衡的二叉搜索树&#xff08;Balanced Binary Search Tree, BBST&#xff09;&#xff0c;由俄罗斯数学家G. M. Adelson-Velsky和E. M. Landis在1962年发明&#xff0c;因此以其名字首字母命名。AVL树通过保持任何节点的两个子树的高度最大差…

笔记 | ASPICE 简介

什么是 ASPICE&#xff08;Automotive SPICE&#xff09; Automotive SPICE&#xff08;简称 A-SPICE 或 ASPICE&#xff09;是欧洲 20 多家主要汽车制造商以ISO/IEC 15504&#xff08;SPICE&#xff0c;Software Process Improvement and Capability dEtermination&#xff0…

Java反射专题

目录 一.反射机制 1.Java Reflection 2.反射相关的主要类 3.反射的优缺点 4.反射调用优化—关闭访问检查 二.Class类 1.基本介绍 2.常用方法 3.获取Class对象的方式 4.那些类型有Class对象 三.类加载 1.介绍 2.类加载时机 3.类加载各阶段 四.获取类结构的信息 1…