欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《C#面向对象程序设计》第8章:控件及GUI程序设计.ppt

    • 资源ID:6525786       资源大小:1.17MB        全文页数:61页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《C#面向对象程序设计》第8章:控件及GUI程序设计.ppt

    第8章 控件及GUI程序设计,主要内容与学习目标8.1 滚动条8.2 Windows窗体事件及事件处理程序8.3 复选框和单选按钮8.4 Connection对象和Command对象8.5 使用SqlDataReader8.6 创建三层应用程序8.7 PictureBox图片框控件8.8 组合框控件和文本框控件8.9 列表框8.10 带复选框的列表框,主要内容与学习目标,主要内容:(1)滚动条、用户定义的颜色。(2)Windows窗体事件及事件处理程序。(3)创建具有默认名称的默认事件处理程序、将多个事件绑定到单个事件处理程序。(4)使用事件处理程序中引发事件的对象参数。(5)复选框和单选按钮。(6)Connection和Command对象。(7)创建到数据库的连接、打开到数据库的连接、关闭到数据库的连接。(8)创建sqlCommand对象、使用sqlCommand对象执行SQL命令。(9)创建三层应用程序。(10)TabControl控件。(11)SqlDataReader。(12)图片框控件。(13)组合框和文本框。(14)列表框。(15)带复选框的列表框。学习目标:(1)创建图形用户界面。(2)创建并操作按钮、滚动条、文本框和标签。(3)使用列表框和组合框显示列表。(4)理解、使用并创建事件。(5)使用Connection、Command和SqlDataReader对象。(6)创建三层应用程序。,8.1 滚动条,可使用滚动条控件为用户输入数值数据,该数值数据可以在控件中显示,也可以在代码中使用。或为自身不提供滚动条的容器(如PictureBox)实现滚动。任务8.1:调色板 问题描述:创建一调色板程序,说明怎样使用滚动条为用户输入数值数据,该数值数据在代码中使用以调节颜色和透明度,并将数据值显示在控件中。调色板程序的功能如下。(1)当程序被启动时,水平滚动条的滑块处于滚动条的最右端,垂直滚动条的滑块处于滚动条的最下端,标签中显示每一滚动条的值(如图8.1所示)。(2)通过单击“滚动条”的右箭头图标或左箭头图标来改变滚动条滑块的位置,标签的正文能反映这个变化。例如,当水平滚动条的滑块在左端时,标签显示值为0;当滑块在右端时,标签显示值为255。水平滚动条的滑块位置改变时,标签的背景颜色发生改变,垂直滚动条的滑块滚动时,标签的透明度发生改变。解决方案:(1)创建名为Mycolor的【Windows应用程序】项目。(2)添加控件并设置属性。选择新建窗体,按照如图8.1所示的界面布局从“工具箱”的【Windows窗体】选项卡中,向新建的窗体添加控件,用鼠标将控件拖放到适当位置。根据表8.1设置控件的属性。(3)编写应用程序的代码。(4)将vsbA、hsbG和hsbB的Scroll事件绑定到事件处理程序ScrollBar_Scroll。(5)测试应用程序。8.1.1 滚动条常用属性8.1.2 滚动条常用事件8.1.3 用户定义的颜色,图8.1 调色板程序,表8.1 属性表,8.1.1 滚动条常用属性,1.Minimum2.Maximum注意:滚动条的最大值不能通过运行时的用户交互来达到。用户交互可以达到的最大值等于Maximum。3.Value4.LargeChange5.SmallChange,8.1.2 滚动条常用事件,Scroll事件为滚动条常用事件。在通过鼠标或键盘操作移动滚动框后发生Scroll事件。该事件可由多种操作产生,例如单击滚动条箭头、按向上箭头或向下箭头、或者拖动滚动框。一般来说,在设计阶段设置滚动条的Max、Min、LargeChange和SmallChange属性,而在程序运行阶段通过Scroll事件过程获取Value属性赋值的变化,监视用户对滚动条的操作。,8.1.3 用户定义的颜色,可以使用Color.FromArgb方法创建用户定义的颜色。此方法使您可以指定一种颜色中红色、蓝色和绿色各部分的强度。此代码生成一种用户定义的颜色,该颜色大致为略带蓝色的灰色。每个数字均必须是从0到255之间的一个整数,其中0表示没有该颜色,而255则为所指定颜色的完整饱和度。因此,Color.FromArgb(0,0,0)呈现为黑色,而Color.FromArgb(255,255,255)呈现为白色。使用此方法还可以指定Alpha部分。这时Color.FromArgb方法还要增加一个参数Alpha,Alpha表示所呈现图形后面的对象的透明度。如果需要指定Alpha部分,则它应为Color.FromArgb方法中4个参数的第一个参数,并且需要从0到255之间的一个整数。FromArgb(int alpha,int red,int green,int blue)方法从4个ARGB分量(alpha、红色、绿色和蓝色)值创建Color结构。其中参数如下。alpha:透明度分量。有效值为从0到255。red:红色分量。有效值为从0到255。green:绿色分量。有效值为从0到255。blue:蓝色分量。有效值为从0到255。此方法的返回值为创建的Color结构。在以上调色板程序中,用垂直滚动条vsbA指定alpha参数的值,水平滚动条hsbR指定red参数的值,水平滚动条hsbG指定green参数的值,水平滚动条hsbB指定blue参数的值。具体代码如下:alpha=vsbA.Value;red=hsbR.Value;green=hsbG.Value;blue=hsbB.Value;由于Color.FromArgb方法中每个参数的有效值为从0到255。因此每个滚动条的Minimum和Maximum属性分别设置为0和255,它们确定了用户可以选择的值范围。,8.2 Windows窗体事件及事件处理程序,事件是可以通过代码响应或“处理”的操作。事件可由用户操作(如单击鼠标或按某个键)、程序代码生成或系统生成。事件处理程序是绑定到事件的方法。当引发事件时,执行事件处理程序内的代码。每个事件处理程序提供两个参数。下面的例子显示button控件的Click事件的事件处理程序button1_Click:private void button1_Click(object sender,System.EventArgs e)第一个参数sender提供对引发事件的对象的引用。第二个参数e是要处理的事件对象,通过引用事件对象的属性(有时引用其方法)可获得一些信息,如单击鼠标事件中鼠标的位置。在前面的示例中,事件处理程序不需要使用由事件源对象和事件数据对象提供的信息。但在很多情况下,如果事件处理程序需要使用由事件源对象和事件数据对象提供的信息,这时事件处理程序就需要使用事件处理程序中的两个参数。任务8.2:计算器问题描述:创建一计算器应用程序(如图8.2所示),该计算器能实现加、减、乘、除、倒数等功能。8.2.1 Button按钮的常用属性8.2.2 Button按钮的常用事件,图8.2 计算器,8.2.1 Button按钮的常用属性,1.Text注意:如果具有焦点的控件接受并处理按Enter键的操作,则Button不处理此操作。例如,如果某个多行的TextBox控件或其他按钮具有焦点,则该控件将处理按Enter键的操作,而不是“接受”按钮处理此操作。2.FlatStyle,8.2.2 Button按钮的常用事件,Click事件:用户单击按钮时发生该事件。,8.3 复选框和单选按钮,复选框和单选按钮是两种状态按钮,它们可为用户提供“是/否”或“真/假”选择。但复选框和单选按钮不同,用户可以从成组使用的复选框中选择一项或多项,但在成组使用的单选按钮中一次只能选择一个单选按钮。单选按钮常用于互相排斥的选项。任务8.3:Font程序 问题描述:创建如图8.3所示的字体应用程序,当单击复选框时,文本框的文字显示不同的字体,当单击单选按钮时,文本框的文字显示不同的颜色。解决方案:(1)创建项目和窗体。创建名为font的Windows应用程序。按图8.3所示的界面向窗体上添加控件。按表8.3设置属性。(2)向窗体类中添加字段和方法。(3)编写复选框的CheckedChanged事件处理程序。(4)编写单选按钮的CheckedChanged事件处理程序。8.3.1 如何设置字体8.3.2 复选框的常用属性8.3.3 复选框的常用事件8.3.4 单选按钮的常用属性8.3.5 单选按钮的常用事件,图8.3 字体程序,表8.3 属性表,8.3.1 如何设置字体,Font类定义特定的文本格式,包括字体、字号和字形属性。使用Font类创建Font类的对象。1.创建Font类的对象2.Font类的常用属性,8.3.2 复选框的常用属性,1.Checked2.CheckState读取或设置复选框的状态。其值为CheckState枚举值之一。表8.4列出了CheckState枚举值及为该值时复选框控件对应于不同Appearance属性的外观。3.Text4.Appearance,表8.4 CheckState枚举值及复选框控件的外观,8.3.3 复选框的常用事件,1.Click2.CheckedChanged3.CheckStateChanged,8.3.4 单选按钮的常用属性,1.Checked使用Checked属性可以获取或设置单选按钮的状态。若选中了单选按钮,则属性值为true;反之,则为false。2.Text 单选按钮右侧显示的文本。,8.3.5 单选按钮的常用事件,1.Click在单击单选按钮控件时发生。2.CheckedChanged每次选中或取消选中单选按钮的时候发生。当用户双击设计器中的这个控件时,该事件为默认事件。,8.4 Connection对象和Command对象,前面的章节忽略了数据存储问题,系统停止运行后所有的数据都会消失。当然,在一个真实的应用程序中,必须找到存储数据的一种方式,我们可以使用数据库对数据进行存储。访问数据库的第一步是与数据库源建立连接,只有建立了连接,才有可能实现在数据库和应用程序之间移动数据。ADO.NET提供了以下两个连接对象,可以使用这两个连接对象之一创建和管理应用程序与数据库之间的连接。这些连接对象具有各种属性和方法,可以使用它们打开和关闭数据库连接,并且发出查询请求来更新信息。SqlConnection:该对象管理与 SQL Server 7.0 版或更高版本的连接。OleDbConnection:该对象管理与可通过OLE DB访问的任何数据存储区的连接。8.4.1 Connection对象8.4.2 Command对象,8.4.1 Connection对象,任务8.4:创建并打开一个到SQL Server的连接 问题描述:创建一应用程序,该程序演示如何使用SqlConnection对象创建和打开一个到SQL Server的连接,如何使用SqlCommand对象提交一个SQL命令,以修改SQL Server数据库(见图8.4)。解决方案:(1)创建项目和窗体。创建名为TestSQL 的Windows应用程序。按图8.4所示的界面向窗体上添加控件。并按表8.5设置属性。(2)编写连接数据库的代码。双击【连接】按钮。添加如下代码到btnConnect_Click 事件处理程序中:(3)测试程序。按F5键运行该应用程序。单击【连接】按钮,打开如图8.5所示的显示连接消息框。,图8.4 操作数据库,表8.5 属性表,图8.5 连接数据库,8.4.2 Command对象,Command对象可用来存放要对SQL Server数据库执行的一个Transact-SQL语句或存储过程,并能执行该Transact-SQL语句或存储过程,利用Command对象可直接对数据库进行处理。任务8.5:操作数据库 问题描述:继续完成“任务8.4”,单击【执行SQL】按钮,使用文本框中输入的SQL命令修改SQL Server数据库中的数据。解决方案:(1)打开frmConnect窗体。(2)双击【执行SQL】按钮。在btnExecute_Click事件处理程序中输入代码(3)测试程序。按F5键运行该应用程序。在文本框中输入对Northwind数据库中的表有效的INSERT、UPDATE或DELETE命令。单击【执行SQL】按钮,执行btnExecute_Click事件处理程序,所影响的行数显示在文本框中(如图8.6)。,图8.6 使用Command对象,8.5 使用SqlDataReader,SqlDataReader提供了一种读取通过在数据源执行查询命令获得的结果集中的数据的一种方法。SqlDataReader是实现IDataReader接口的类,若要创建SqlDataReade对象,必须调用SqlCommand对象的ExecuteReader方法,而不直接使用构造函数。SqlDataReader是一个包含表格式形式(即行和列)的查询结果集。可通过SqlDataReader对象的属性或方法访问SqlDataReader中的数据。任务8.6:雇员信息管理问题描述:对SQL Server中的Northwind数据库创建一数据库应用程序,该应用程序能够实现浏览每一雇员的相关信息,如图8.7所示。解决方案:(1)创建项目和窗体。创建项目名为Northwind的Windows应用程序。(2)向Windows窗体添加选项卡并设置选项卡的属性。Windows窗体TabControl显示多个选项卡,这些选项卡类似于笔记本中的分隔卡和档案柜文件夹中的标签。选项卡中可包含图片和其他控件。(3)将控件添加到选项卡页。单击【个人信息】选项卡页以使其显示在最前面。按图8.8所示的界面从“工具箱”的【Windows窗体】选项卡中,向【个人信息】选项卡添加控件,用鼠标将控件拖放到适当位置。并向Windows窗体添加7个按钮控件。根据属性表8.6设置控件的属性。单击【其他信息】选项卡页以使其显示在最前面。按图8.9所示的界面从“工具箱”的【Windows窗体】选项卡中,向【其他信息】选项卡添加控件,用鼠标将控件拖放到适当位置。根据属性表8.7设置控件的属性。创建Employee类。,图8.7 雇员信息管理应用程序,图8.8 雇员信息管理用户界面,表8.6 属性表,图8.9 雇员信息管理用户界面,表8.7 属性表,8.6 创建三层应用程序,三层应用程序设计要求应用程序中交互作用的对象被分成3种类问题域类、GUI类和数据存取类。问题域类是特定于业务应用程序的对象的类,如雇员(Employee)类、客户(Customer)类和产品(Product)类等,问题域类是对实际的业务实体的建模,它用来封装对象的数据,存储对象的信息。GUI类可将组成用户界面的对象定义到应用程序中,如按钮、标签、文本框和列表框等。GUI类提供用于数据输入和显示的用户界面。数据存取类提供存取对象有关的操作,将对象的有关信息存储于数据库或文件中,以实现对象的永久存储,供以后使用,或从数据库中检索数据存储于对象中,供其他对象使用。三层设计要求应用程序开发人员在设计和构建应用程序时定义3种类。首先,程序设计人员标识和定义问题域类。然后定义数据存取类以允许问题域类与数据存取类的交互作用。定义了这些类之后程序设计人员就会定义如何使用GUI类以允许用户与问题域类的交互作用。这三层全部完成之后,它们即准备联合起来作为一个完整的应用程序。图8.10显示了这三层是如何交互作用的。三层结构可以满足常用的MVC设计模式。让这三层将用户界面、业务应用程序对象和数据存取类的功能分离,系统维护变得简单化,因为对GUI所做的许多更改都不会影响问题域类和数据存取类。同样,对数据存取类所做的许多更改也不会影响问题域类或GUI类。例如,可以对数据存取类进行修改从而升级或更改数据库管理软件(如将SQL Server改为Oracle),但不会影响问题域类或GUI类,同样,可以对图形用户界面进行升级或更改,也不会影响其他层。任务8.7:增强雇员信息管理程序,图8.10 三层交互作用示意,8.7 PictureBox图片框控件,通常使用PictureBox来显示位图、图标、JPEG或GIF文件中的图形。在设计时或运行时将Image属性设置为要显示的图像。在显示区域中剪辑和定位图像由设置为PictureBoxSizeMode枚举中的值的SizeMode属性来控制。默认情况下,PictureBox控件在显示时没有任何边框。即使图片框不包含任何图像,仍可以使用BorderStyle属性提供一个标准或三维的边框,以便使图片框与窗体的其余部分区分。任务8.8:雇员相片管理问题描述:增强雇员管理程序的功能,要求能够修改、添加和删除雇员的相片(如图10.11所示)。8.7.1 PictureBox的常用属性8.7.2 PictureBox的常用事件8.7.3 Image.FromFile方法,图10.11 字体程序,8.7.1 PictureBox的常用属性,1.Image2.BorderStyle指示控件的边框样式。属性值为BorderStyle枚举值之一。BorderStyle枚举值见表8.8。BorderStyle属性默认值为None。,表8.8 BorderStyle枚举值,8.7.2 PictureBox的常用事件,1.Click用户单击控件时发生该事件。2.DoubleClick用户双击控件时发生该事件。,8.7.3 Image.FromFile方法,Image.FromFile(string filename)方法从指定的文件创建Image对象。其中filename为字符串,它包含要从中创建 Image对象的文件的名称。此方法的返回值为创建的Image对象。,8.8 组合框控件和文本框控件,Windows窗体ComboBox控件用于在下拉组合框中显示数据。默认情况下,ComboBox控件分两个部分显示:顶部是一个允许用户输入列表项的文本框。第二部分是一个列表框,它显示一个项列表,用户可从中选择一项。SelectedIndex属性返回一个整数值,该值与选定的列表项相对应。通过在代码中更改 SelectedIndex值,可以编程方式更改选定项;列表中的相应项将出现在组合框的文本框部分。如果未选定任何项,则SelectedIndex值为-1。如果选定列表中的第一项,则SelectedIndex 值为0。SelectedItem属性与SelectedIndex类似,但它返回项本身,通常是一个字符串值。Items.Count属性反映列表中的项数,并且Items.Count属性的值总比SelectedIndex的最大可能值大1,因为SelectedIndex是从零开始的。若要在ListBox控件中添加或删除项,可使用Items.Add、Items.Insert、Items.Clear 或 Items.Remove方法。或者,可以在设计器中使用Items属性向列表添加项。TextBox控件可用于接受密码,可以使用PasswordChar属性屏蔽在控件的单行版本中输入的字符。也可以通过将ReadOnly属性设置为true来限制TextBox控件中的所有数据项输入。任务8.9:登录程序 问题描述:创建一个Login程序(如图8.12所示),让用户选择登录名称,输入密码,在【确定】命令按钮的Click事件中,调用事件处理程序,验证用户输入的密码(密码为用户名称加用户的出生日期)。Login程序还提供了一个用户的图片和文本描述。如果验证用户输入的密码正确,则进入雇员管理窗体。8.8.1 ComboBox的常用属性和方法8.8.2 列表框控件的常用事件8.8.3 TextBox的常用属性8.8.4 TextBox的常用事件,图8.12 登录程序,8.8.1 ComboBox的常用属性和方法,1.Items2.SelectedIndex3.SelectedItem4.Text5.DropDownStyle该属性确定要显示的组合框的样式,也就是确定用户能否在文本部分中输入新值以及列表部分是否总显示。其枚举值如表8.10所示。,表8.10 DropDownStyle枚举值,8.8.2 列表框控件的常用事件,SelectedIndexChanged 选定的索引发生变化时会发生该事件。,8.8.3 TextBox的常用属性,1.Text2.PasswordChar3.MaxLength4.ReadOnly5.ScrollBars获取或设置哪些滚动条应出现在多行TextBox控件中。属性值为ScrollBars枚举值之一(见表8.11),以指示多行TextBox控件在显示时没有滚动条、有水平滚动条、有垂直滚动条还是两种滚动条都有。默认值为ScrollBars.None。6.Multiline7.TextBoxBase.WordWrap8.SelectionStart9.SelectionLength10.TextAlign获取或设置TextBox控件中文本的对齐方式。属性值为HorizontalAlignment枚举值之一(见表8.12),以指定控件中文本的对齐方式。默认值为HorizontalAlignment.Left。11.AcceptsReturn,表8.11 ScrollBars枚举值,表8.12 HorizontalAlignment枚举,8.8.4 TextBox的常用事件,TextChanged文本框中的文本发生变化时(用户添加或删除字符)发生该事件。,8.9 列表框,ListBox控件显示一个项列表,用户可以查看并选择列表中的一项或多项。如果项总数超出可以显示的项数,则自动向ListBox控件添加滚动条。当MultiColumn属性设置为true时,列表框以多列形式显示项,并且会出现一个水平滚动条。当MultiColumn属性设置为false时,列表框以单列形式显示项,并且会出现一个垂直滚动条。当ScrollAlwaysVisible设置为true时,无论项数多少都将显示滚动条。SelectedItem属性类似于SelectedIndex,但它返回项本身,通常是字符串值。Items.Count属性反映列表中的项数,并且Items.Count属性的值总比SelectedIndex的最大可能值大1,因为SelectedIndex是从零开始的。若要在ListBox控件中添加或删除项,可使用Items.Add、Items.Insert、Items.Clear或Items.Remove方法。或者,可以在设计时使用Items属性向列表添加项。CheckedListBox控件对ListBox控件进行了扩展。该控件在列表中的项旁边提供了一个复选框,这样,用户可同时勾选多个列表项。任务8.10:产品信息管理主要知识点:向Windows窗体中的ListBox控件添加项。确定Windows窗体ListBox控件中的选定项。在Windows窗体的ListBox控件中选择项。在组合框中查找项。使用SqlCommand对象的ExecuteNonQuery方法执行SELECT、INSERT、UPDATE、DELETE SQL命令来完成查询、添加、修改或删除数据操作。问题描述:对SQL Server中的Northwind数据库创建一数据库应用程序,该应用程序能够实现浏览每一产品的相关信息,能对产品的相关信息进行修改、查询,能够添加、删除产品(如图8.13所示)。8.9.1 列表框控件的常用属性8.9.2 列表框控件的常用方法8.9.3 列表框控件的常用事件,图8.13 产品信息管理,8.9.1 列表框控件的常用属性,1.Items2.SelectedIndex3.SelectedItem4.SelectedIndices5.SelectedItems6.SelectionMode7.Sorted,8.9.2 列表框控件的常用方法,6.SetSelected7.GetSelected,8.9.3 列表框控件的常用事件,SelectedIndexChanged:选定的索引发生变化时会发生该事件。,8.10 带复选框的列表框,CheckedListBox控件从ListBox类派生而来。它几乎能完成列表框可以完成的所有任务,并且还可以在列表中的项旁边显示复选标记。两种控件间的其他差异在于,复选列表框只能有一项选定或没有任何选定。注意选定的项在窗体上突出显示,与已选中的项不同。任务8.11:CheckedListBoxTest程序 主要知识点:使用ItemCheck事件处理程序。ItemCheckEventArgs类型的参数。使用带复选列表框的CheckOnClick属性。获取复选列表框中的指定项的复选状态。问题描述:创建一CheckedListBoxTest程序(如图8.14所示),演示复选列表框控件一些特有的基本操作。解决方案:(1)创建项目和窗体。启动 Visual Studio。创建名为CheckedListBoxTest的Windows应用程序。按图8.14所示的界面向窗体上添加控件。按表8.14设置属性。(2)编写复选列表框中选择选项的ItemCheck事件处理程序。(3)编写chkOnClick复选框控件的CheckedChanged事件处理程序。(4)编写【添加】按钮的CheckedChanged事件处理程序。(5)编写文本框控件的TextChanged事件处理程序。8.10.1 复选列表框控件的常用属性8.10.2 复选列表框控件的常用方法和事件,图8.14 CheckedListBoxTest程序,表8.14 属性表,8.10.1 复选列表框控件的常用属性,1.CheckedItems2.CheckedIndices3.CheckOnClick4.SelectionMode,8.10.2 复选列表框控件的常用方法和事件,1.GetItemChecked(index)方法该方法取项的索引为参数,如果该项被选中,则返回值为true,否则为false。2.ItemCheck事件当复选列表框中某项的选中状态发生变化时就发生ItemCheck事件。,

    注意事项

    本文(《C#面向对象程序设计》第8章:控件及GUI程序设计.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开