自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

腻害

文章都是边学边写的,可能会有一些问题哦!

  • 博客(81)
  • 收藏
  • 关注

原创 【无标题】C#委托

委托从字面上理解就是一种代理,类似于房屋中介,由租房人委托中介为其租赁房屋。在 C# 语言中,委托则委托某个方法来实现具体的功能。委托是一种引用类型,虽然在定义委托时与方法有些相似,但不能将其称为方法。委托在使用时遵循三步走的原则,即定义声明委托、实例化委托以及调用委托。从数据结构来讲,委托是和类一样是一种用户自定义类型。委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。委托是 C# 语言中的一个特色,通常将委托分为命名方法委

2022-05-29 08:25:59 220

原创 WPF InputBingdings

InputBindings:获取与此元素关联的输入绑定的集合。内容为一个或多个 InputBinding 元素(通常为 KeyBinding 或 MouseBinding 派生类)。 其中每个都应具有 Command 和 Gesture 属性集示例一:下面是给Border控件绑定鼠标右击事件(也可传递参数)<Border Height="50" Background="Gray" Margin="2 2 2 0"> <Border.InputBindings> &lt

2022-05-18 14:56:40 868

原创 C#序列化

序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。需要分清楚的概念:对象的序列化而不是类的序列化。对象的序列化表明C#提供了将运行中的对象(实时数据)写入到硬盘文件或者数据库中,此功能可以运用在需要保留程序运行时状态信息的环境下。使用序列化有两个最重要的原因:一个原因是将对象的状态永久保存在存储媒体中,以便可以在以后重新创建精确的副本;另一个原因是通过值将对象从一个应用程序域发送到另一个应用程序域中。前提:要将对象的类声明为可以序

2022-05-08 08:48:53 519

原创 WPF ComboBox

ComboBox 控件在很多方面都类似于 ListBox 控件,但占用的空间要少得多,因为项目列表在不需要时会隐藏起来。ComboBox 控件在 Windows 中的很多地方都有使用,但为了确保每个人都知道它的外观和工作方式,我们将直接进入一个简单的示例:<Window x:Class="WpfTutorialSamples.ComboBox_control.ComboBoxSample" xmlns="http://schemas.microsoft.com/winfx/2006/

2022-04-28 08:33:10 3061

原创 WPF数据绑定

一、概念:什么是数据绑定?WPF中的数据绑定:是在应用程序 UI 与业务逻辑之间建立连接的过程;扩展:1.为应用程序提供了一种表示数据和与数据交互的简单而又一致的方法。2.元素能够以公共语言运行时 (CLR) 对象和 XML 的形式绑定到各种数据源中的数据。3.数据绑定可能还意味着如果元素中数据的外部表现形式发生更改,则基础数据可以自动更新以反映更改。4.一种典型用法是将服务器或本地配置数据放置到窗体或其他 UI 控件中。在 WPF 中,元素的依赖项属性可以绑定到 CLR 对象(包括 ADO.

2022-04-20 08:39:46 5447

原创 MVVM框架

在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI显示和逻辑代码的耦合度,如需要更换界面时,逻辑代码修改很少,甚至不用修改。与WinForm开发相比,我们一般在后置代码中会使用控件的名字来操作控件的属性来更新UI,而在WPF中通常是通过数据绑定来更新UI;在响应用户操作上,WinForm是通过控件的事件来处理,而WPF可以使用命令绑定的方式来处理,耦合度将降低。一、MVVM框架简介1. 什

2022-04-10 08:22:07 24376

原创 C#中的结构体与类的区别

首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字struct.在语法上其实类和结构有着很多相似的地方.1、结构体中声明的字段无法赋予初值,类可以:执行以上代码将出现“结构中不能实例属性或字段初始值设定”的报错,而类中无此限制,代码如下:2、结构体的构造函数中,必须为结构体所有字段赋值,类的构造函数无此限制:补充:类与结构的选择首先明确,类的对象是存储在堆空间中,结构存储在栈中。堆空间大,但访问速度较慢,栈空间小,访问速度相对更快。故而,当我们描述一个轻

2022-03-28 08:53:19 2214

原创 WPF MVVM循序渐进

简单的三层架构示例和 GLUE代码问题第一步:最简单的 MVVM 示例 - 把后台代码移到类中第二步:添加绑定 - 消灭后台代码第三步:添加执行动作和“INotifyPropertyChanged”接口第四步:在 ViewModel 中解耦执行动作第五步:利用 PRISMWPF MVVM 的视频演示从我们还是儿童到学习成长为成年人,生命一直都在演变。 对于软件架构, 同样适用这个道理, 从一个基础的架构开始, 随着每个需求和情境在不断演化。如果你问任何一个 .NET 开发者, 什么是最小的基

2022-03-20 14:57:31 353

原创 WPF TreeView 控件样式

TreeView树视图(TreeView)控件以树的方式显示集合,可以显示层次关系。Nodes属性该属性用于设计TreeView控件的节点。具体方法在TreeView的属性栏找到Nodes,点击 …,弹出“TreeNode编辑器”窗口。“添加根”按钮可以为TreeView控件添加根结点,添加根结点后,“添加子级”按钮变为可用。ImageList属性用于设置从中获取图像的ImageList控件,该属性的设置必须与ImageList控件相配合。Scrollable属性用于指示当TreeVie

2022-03-08 14:59:06 1654

原创 WPF样式

WPF样式一、WPF相较于以前学的WinForm,WPF在UI设计与动画方面的炫丽是最吸引我来学习的。在WPF中XMAL代码的引入使得代码的编写能够前后端分离,为获得更好的界面,也使得我们不得不分出一半的时间花在前端代码的编写上(虽然微软提供了Blend for Visual Studio这样的设计软件,但我认为学习的时候就应该从难处学),而样式(Style)又是前端代码中非常重要的元素,所以在啃《WPF编程宝典第四版》的时候边看边练习后,决定写一些学习笔记,后面也会继续写。介于内容并不深入,所以且称为入

2022-03-01 15:55:36 1120

原创 Wpf画刷

Wpf画刷学习了WPF之后我们知道它有很多的工具、今天我们来讲一下WPF中的画刷一、什么是画刷?画刷是是一种渲染方式,用于填充图形形状,如矩形、椭圆、扇形、多边形和封闭路径。在GDI+中,画刷分为以下几种:SolidBrush,TextureBrush,HatchBrush,LinearGradientBrush和PathGradientBrush。在层次关系上,它们都位于System.Drawing空间下,继承自System.Drawing.Brush类。画刷主要分为三大类:1、SolidBru

2021-11-08 14:58:13 263

原创 丰富多彩的Effect

丰富多彩的Effect在绘图软件Photoshop中,使用滤镜插件能获得如下好处:提高工作效率。得到更专业的效果。对使用者的技术水平要求相对较低。WPF引进了这种“滤镜插件”的思想——UIElement类的Effect属性,Effect属性的数据类型是Effect类(抽象类),可以接收Effect类的任何一个派生类的派生类实例作为它的值。Effect类位于System.Windows.Media.Effects名称空间中,它的派生类有3个,分别是:BlurEffect:模糊效果。DropSh

2021-10-18 14:59:00 200

原创 XAML绘画

XAML绘画Line:直线段,可以设置其笔触(Stroke)。Rectangle:矩形,既有笔触,又有填充(Fill)。Ellipse:椭圆,长、宽相等的椭圆即为正圆,既有笔触又有填充。Polygon:多边形,由多条直线段围城的闭合区域,既有笔触又有填充。Polyline:折线(不闭合),由多条首尾相接的直线段组成。Path:路径(闭合区域),基本图形中功能最强大的一个,可由若干直线、圆弧、贝塞尔曲线组成。日常工作中,常用的绘图容器是Canvas和Grid。一、矩形矩形由笔触(Stroke

2021-10-12 08:28:52 135

原创 WPF自定义按钮

WPF自定义按钮在学习了WPF后我们知道微软在WPF框架里提供了一些基础功能各异的控件,例如Button、TextBox、Label、Panel、TextBlock等等。微软将这些组件可视化集成到Visual Studio集成开发工具中了,这在实际生产环境中将有利于提升我们的开发效率。我们可以自己打开Visual Studio 新建WPF应用来使用这些控件。如下图:从以上图片可以看出这些默认的控件样式都比较单一、例如Button控件,基本以按钮形式呈现,按钮默认为灰色,当用户鼠标悬浮在按钮上时候按钮颜

2021-09-28 10:42:13 1032

原创 WPF的style样式(一)

Style 直译过来就是“风格”、“样式”。拿人来举例,人的风格是指静态外观和行为举止。同样一个人,如果留平头、穿上足球队的队服、脚蹬战靴,看上去就感觉他是一名叱咤球场的运动员;如果让他换上一身笔挺的西装、穿上皮鞋,再拎上一个公文包,看上去就是一位商务人士;如果让他梳起爆炸头、戴上墨镜、打几个耳孔再穿上一身肥大的休闲装,活脱脱一个非主流形象。这些就是静态外观风格,是通过改变一些属性值的搭配来实现的。除了从静态外观来判断一个人的风格,我们还会观察他的行为特点。比如遇到困难时,有些人很乐观、照样谈笑风生,有些人

2021-09-18 08:52:29 420

原创 Wpf事件

事件的前身是消息(Message)。消息本质就是一条数据,这条数据里记载着消息的类别,必要的时候还记载一些消息参数(如WM_LBUTTONDOWN消息所携带的参数——鼠标单击处的X、Y坐标),也有些消息是不用携带参数的(如按钮被单击的消息——程序员并不关心鼠标点在按钮的哪个位置上了)。随着微软面向对象开发平台日趋成熟,微软把消息机制封装成了更容易让人理解的事件模型。事件模型隐藏了消息机制的很多细节,消息驱动机制在事件模型中被简化为3个关键点:事件的拥有者:即消息的发送者。事件的宿主可以在某些条件下激发

2021-09-05 19:43:05 295

原创 标记扩展的概念

标记扩展的概念撰写时间:2021年8月28日标记扩展也是对属性进行赋值的一种方式,在XAML中使用一对‘{}’中括号表示,当解析遇到{}时不会直接转换为字符串,而是将其当做一个标记扩展进行处理,通过该标记扩展类型找到其真正的值;标记扩展是XAML的一个特性,您可以通过标记扩展处理属性字符串并将对象返回给XAML加载器来指定对象引用,可以实现标记扩展来为属性使用中的属性、属性元素使用中的属性或两者都提供值,轻松实现XAML页面属性赋值,资源引用,类型转换等操作;使用方式如下:语法:标记扩展使用{标记

2021-08-28 09:18:56 184

原创 TextBlock/Textbox

TextBlock/Textbox之前我们讲解过许多常用的控件,我们知道最常用的控件其中有两个比较相似的控件,有时候就不知道该用其中的哪一个,下面我们来分析一下他们的作用吧来决定什么时候该用哪个吧。1、Textbox首先我们知道文本框 (TextBox) 是在窗体中输入信息时最常用的控件,通过设置文本框属性可以实现多行文本框、密码框等。TextBox控件上和TextBlcok有很大的不同,TextBox是有边框的,可输入的一个控件。同样在UWP项目中你可以拖拽一个进行使用,也在xaml中进行手动输入。

2021-08-18 10:44:24 1862

原创 WPF基本控件

WPF基本控件 引用文本 作者:邱锡纶 撰写时间:2021年8月6日 星期五上篇我们简单的介绍了一下wpf,WPF可以运行在三种环境下面,如下:1、 WPF桌面程序,此类型没有任何限制,可以是Windows可执行程序也可以是DLL动 态链接库。 只需要.Net Framework 3.0以上版本支持即可!2、 RIA分布式环境,服务器与客户端浏览器下载使用ActiveX插件方式解释执行的。微 软更名为Silverlight,由于安全原因,微软提取精简版.Net Frame

2021-08-06 08:27:43 276

原创 XAML命名空间以及命名空间映射到程序集

(作者:邱桑 撰写时间:2021年7月28日 星期三)首先我们先来介绍一下什么是XAML语言,XAML语言:是微软公司为构建应用程序用户界面而创建的一种新的“可扩展应用程序标 记语言”,提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面。 特点: 定义应用程序的界面元素 显示的声明WPF资源(样式、模板、动画等) 可扩展性(自定义UI控件) 集中关注于界面的设计和实现XAML命名空间以及命名空间映射到程序集1、XAML命名空间 开发语言会将常用功能以类的形式封装,开发人...

2021-07-28 09:31:56 308

原创 《进销存管理系统》项目研发阶段性总结

(作者: 邱桑 撰写时间:2021年7月17日 星期六)顾名思义,我们这个项目是以进货销售和存货的一个管理系统,我们又以它的功能主要分为系统设置、进货管理、销售管理、库存管理、统计报表、往来账款等6大模块,而其中各个模块下面都有对应的功能。1、项目概要(1)系统设置 : 主要包括有 商品管理、供货商设置、客户设置、部门设置、员工管理、操作员设置、角色管理(2)进货管理 : 主要包括有 采购进货、采购退货、采购入库、生产入库、采购入库查询进销存管理系统(3)销售管理 : 主...

2021-07-17 10:48:11 880 1

原创 JSON数据

(撰写时间:2021年7月7日 星期三)这次我们要讲的是JSON,首先什么是JSON呢?JSON 是一种数据格式,在与后端的数据交互中有较为广泛的应用、JSON是 (JavaScript Object Notation, JS 对象标记),它是一种数据交换格式。在JSON出现之前,大家一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后,任何正常的软件开发人员碰到XML都会感...

2021-07-07 09:15:33 161

原创 正则表达式

正则表达式正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间

2021-06-17 09:04:11 219

原创 JavaScript循环

(撰写时间:2021年06月08日 星期二)如果你要运行多次相同的代码、但是每次的值有不同的时候、那么这个时候用循环是很方便的。下面我们就来简说一下JavaScript中的循环,首先我们可以这样输出数组的值然后我们也可以通过for循环来简写代码for (语句 1; 语句 2; 语句 3){ 被执行的代码块}这是for循环的语法结构。除此之外、JavaScript也还支持其他的循环方法,比如下面的几种·for/in – 循环遍历对象的属性·While – 当指定的条件为...

2021-06-08 09:22:08 69

原创 枚举的使用

枚举枚举是一组命名整型常量。枚举类型是enum关键字声明的。C#枚举是值数据类型。换句话说,枚举包括自己的值,且不能继承或传递继承。声明enum变量声明枚举的一般语法:enum<enum_name>{Enumeration list};其中,enum_name指定枚举类型名称Enumeration list 是一个用逗号分隔的标识符列表枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值,第一个枚举符号的值默认为0。实例下面的实例演示了枚举变量的用法:

2021-05-27 09:04:45 78

原创 用bootstrap简写模态弹窗

用bootstrap简写模态弹窗 (撰写时间:2021年5月17日 星期一)当我们在做项目或者课后作业时肯会经常遇到一些弹窗内容,而且要是单纯的用JavaScript代码来实现的话,可能会比较消耗时间,这次我们来分享一个插件bootstrap,而Bootstrap 是全球最受欢迎的前端组件库,用于开发响应式布局、移动设备优先的 WEB 项目。Bootstrap 是一套用于 HTML、CSS 和 JS 开发的开源工具集。利用我们提供的 Sass 变量和大量 mixin、响应式栅格系统、可扩

2021-05-17 20:15:49 237 2

原创 使用layui实现表格制作

使用layui实现表格制作 作者:邱锡纶 撰写时间:2021年05月08日这次分享的是如何使用layui实现表格的制作,如下图所示,用layui制作的表格效果还是相当不错的,当然我们要使用layui制造表格要知道layui框架返回的数据我们必须要按照它们的格式,否则会报请求数据错误等问题。1、首先我们要引用它要用到的css和js样式文件2、想要制造表格,我们的HTML中需要有table这个标签3、我们也可以自己自定义一些列,比如下面的修改删除等4、接着就是js部分,

2021-05-08 10:15:46 1740 1

原创 在数据库中快速建表

在数据库中快速建表 作者:邱锡纶 撰写时间:2021年04月29 星期四这次讲的是通过powerDesgner这个软件生成的代码到数据库中快速的建表!当我们打开这个软件时候,首先我们先在powerDesgner中的菜单栏里面找到table,直接拉出来即可使用,接着我们可以输入我们的表的信息,比如表格名称,表里面的内容信息类型等,到了这一步确认后,我们可以直接找到上面的导航栏里面的preview按钮进行单个表进行添加到数据库,也可以通过Databse - Genera

2021-05-08 08:17:25 1047

原创 MVC中的cookie

MVC中的cookie 作者:邱锡纶 撰写时间:2020年8月18日08:10:17 刚开始上课老师说Cookie、Cookie一开始还以为是饼干的意思,但是通过后面学习制度其实Cookie 并不是它的原意“甜饼”的意思, 而是一个保存在客户机中的简单的文本文件, 这个文件与特定的 Web 文档关联在一起, 保存了该客户机访问这个Web 文档时的信息, 当客户机再次访问这个 Web 文档时这些信息可供该文档使用。由于“Cookie”具有可以保存在客户机上的神奇特性, 因此它可以帮助我们

2020-08-18 08:10:57 923

原创 MVC中的新增、删除、修改

新增、删除、修改 作者:邱锡纶 撰写时间:2020年08月17日新增、删除、修改、查询这都是MVC中最基础的,所以说想要学好MVC必须先把基础打好,查询是比较复杂点,这里我简单介绍一下新增、删除、修改新增,无疑就是为表新增数据,、新增图片等等,但新增数据不是你页面上填写完数据后,就会给你保存的。这是一个有过程的保存。首先它的保存思路你得想清楚,这样你才能把它的代码写出来。首先视图上写好一个保存的点击” click”事件,然后在点击事件里把你所填的数据先获取到。通过这样的获取方法将

2020-08-17 20:23:38 563

原创 Linq查询

(作者:邱锡纶 撰写时间:2020年08月9日 星期天)Linq查询—单表查询/数据显示:单表查询:首先要将数据库导入到vs中,然后在控制器头部引入导入的数据库实体模型实例化实体模型FJDPXTEntities 实体模型名称myModel 接收实体模型内的数据FJDPXTEntities myModel = new Models.FJDPXTEntities();之后开始写查询数据的方法GetAirportInfo 方法名 LayuiTablePage 后续用于数据分页Publi

2020-08-09 20:31:19 267

原创 jQueryDOM操作节点

(作者: 邱锡纶 撰写时间 : 2020年05月03日 星期天)jQueryDOM操作节点jQuery的选择器很强大,用起来又简单又灵活,但是搞了这么久,我拿到了jQuery对象,到底要干什么?答案当然是操作对应的DOM节点啦!回顾一下修改DOM的CSS、文本、设置HTML有多么麻烦,而且有的浏览器只有innerHTML,有的浏览器支持innerText,有了jQuery对...

2020-05-05 15:16:01 172

原创 jQuery事件

(作者: 邱锡纶 撰写时间: 2020年5月3日 星期天)jQuery事件因为JavaScript在浏览器中以单线程模式运行,页面加载后,一旦页面上所有的JavaScript代码被执行完后,就只能依赖触发事件来执行JavaScript代码。浏览器在接收到用户的鼠标或键盘输入后,会自动在对应的DOM节点上触发相应的事件。如果该节点已经绑定了对应的JavaScript处理函...

2020-05-05 15:09:20 103

原创 jQuery动画效果

(作者: 邱锡纶 撰写时间2020年5月4日 星期一)jQuery动画效果用JavaScript实现动画,原理非常简单:我们只需要以固定的时间间隔(例如,0.1秒),每次把DOM元素的CSS样式修改一点(例如,高宽各增加10%),看起来就像动画了。但是要用JavaScript手动实现动画效果,需要编写非常复杂的代码。如果想要把动画效果用函数封装起来便于复用,那考虑的事情就更...

2020-05-05 15:05:10 186

原创 jQuery异步ajax

(作者:邱锡纶 撰写时间:2020年5月5日星期二)jQuery异步ajaxAJAX 是与服务器交换数据的技术,它在不重载全部页面的情况下,实现了对部分网页的更新。AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据,并在网页上进行显示。使用 AJ...

2020-05-05 15:00:18 135

原创 jQuery基础使用与样式篇

(作者:邱锡纶 撰写时间:2020年4月30日星期四)jQuery基础使用与样式篇首先我们先来认识一下什么是jQuery,jQuery 是一个 JavaScript 库。jQuery 极大地简化了 JavaScript 编程。jQuery是一个JavaScript函数库。jQuery是一个轻量级的"写的少,做的多"的JavaScript库。jQuery库包含以下功能:HTML 元...

2020-04-30 17:18:14 118

原创 JavaScript异步Ajax与json总结

(作者:邱锡纶 撰写时间:2020年4月30日星期四)JavaScript异步Ajax与json总结首先先来说说Ajax,AJAX = 异步 JavaScript 和 XML。AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 AJAX)如果需...

2020-04-30 17:15:18 138

原创 JavaScript表单提交总结

(作者:邱锡纶 撰写时间:2020年4月29日星期三)HTML 表单验证可以通过 JavaScript 来完成。提交表单可以通过元素的submit()方法提交一个表单,例如,响应一个的click事件,在JavaScript代码中提交表单:这种方式的缺点是扰乱了浏览器对form的正常提交。浏览器默认点击时提交表单,或者用户在最后一个输入框按回车键。 以下实例代码用于判断表单字段(fna...

2020-04-29 11:21:10 369

原创 JavaScript浏览器对象模型BOM

(作者:邱锡纶 撰写时间:2020年4月28日星期二)JavaScript浏览器对象模型BOMwindow对象有一系列的属性,这些属性本身也是对象;属性-含义closed 当窗口关闭时为真;defaultStatus 窗口底部状态栏显示的默认状态信息;document 窗口中当前显示的文档对象;frames 窗口中的框架对象数组;history 保存有窗口最近加载的URL;...

2020-04-28 17:07:09 109

原创 JavaScript事件总结

(作者:邱锡纶 撰写时间:2020年4月27日星期一)JavaScript事件总结HTML 事件可以是浏览器行为,也可以是用户行为。以下是 HTML 事件的实例:• HTML 页面完成加载• HTML input 字段改变时• HTML 按钮被点击通常,当事件发生时,你可以做些事情。在事件触发时 JavaScript 可以执行一些代码。HTML 元素中可以添加事件属性,使用 ...

2020-04-28 16:27:32 329

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除