欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    Windows窗体界面设计.ppt

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

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

    Windows窗体界面设计.ppt

    Windows窗体界面设计,1 窗体、属性与事件 2 Windows窗体基本控件 3 菜单与工具栏 4 其他Windows窗体控件,本章教学目的 介绍Windows窗体基本设计方法以及基本控件的用法。 本章教学要求 (1)掌握基本控件的属性设置方法以及常用属性; (2)掌握基本控件的常用事件处理方法; (3)掌握菜单与工具栏的用法; (4)了解其他内容。,先观察:界面设计举例1,1 窗体的属性和透明显示,利用Transparent和Parent属性,可以将Label放到PictureBox上透明显示,也可以将多个PictureBox重叠透明显示。 举例2: (1)将label1、PictureBox1和PictureBox2重叠放到一个Panel控件内 (2)设置label1、PictureBox1和PictureBox2控件的BackColor属性均为 Transparent (3)在构造函数中,设置label1和PictureBox2的父控件为PictureBox1: label1.Parent = pictureBox1; pictureBox2.Parent = pictureBox1; 则label1和PictureBox2相对于PictureBox1是透明的, 而PictureBox1相对于窗体Form1是透明的。,1.2 单文档窗体(SDI)与多文档窗体(MDI),1.默认为单文档窗体(SDI),将窗体的IsMdiContainer属性设置为 true,即可将该窗体变为多文档窗体(MDI)。 2. MDI例子: (1)创建项目MdiExample (2)添加窗体Form2、Form3 (3)将Form1的IsMdiContainer属性设置为True,然后添加菜单: (a) 打开与关闭子窗口 子菜单:打开Form2 打开Form3 关闭Form2 关闭Form3 (b)排列子窗口(子菜单:水平平铺、垂直平铺、层叠) (c)退出,1.2 单文档窗体(SDI)与多文档窗体(MDI),(4)添加“打开Form2”、“打开Form3”事件: private void 打开Form2ToolStripMenuItem_Click() Form2 fm = new Form2(); fm.MdiParent = this; fm.Name = “Form2“; fm.Show(); private void 打开Form3ToolStripMenuItem_Click() Form3 fm = new Form3(); fm.MdiParent = this; fm.Name = “Form3“; fm.Show(); ,不能省略,如果不设置,将其作为子窗体时,其Name属性默认为空字符串(String.Empty),1.2 单文档窗体(SDI)与多文档窗体(MDI),(5) 添加“关闭Form2”、“关闭Form3”事件: private void 关闭Form2ToolStripMenuItem_Click() Form mdiChildren = this.MdiChildren; foreach(Form fm in mdiChildren) if (fm.Name = “Form2“) fm.Close(); private void 关闭Form3ToolStripMenuItem_Click() Form mdiChildren = this.MdiChildren; foreach (Form fm in mdiChildren) if (fm.Name = “Form3“) fm.Close(); ,1.2 单文档窗体(SDI)与多文档窗体(MDI),(6) 添加子窗体排列事件: private void 水平平铺ToolStripMenuItem_Click() this.LayoutMdi(MdiLayout.TileHorizontal); private void 垂直平铺ToolStripMenuItem_Click() this.LayoutMdi(MdiLayout.TileVertical); private void 层叠ToolStripMenuItem_Click() this.LayoutMdi(MdiLayout.Cascade); (7) 添加“退出”事件: private void 退出ToolStripMenuItem_Click() Application.Exit(); (8) 运行,观察效果。,实验中发现的问题回答,问题:我希望知道程序是否执行到某处,但又不希望在设计窗体上显示,有哪些方法可以做到? 答:方法1:在判断是否执行的地方设置断点。 方法2:利用调试输出窗口输出相应信息。 (1)选择菜单的“视图” “输出”,以便显示调试信息 (2)利用调试信息测试执行情况。例如测试每次循环计算的结果: int sum = 0; for (int i = 0; i 100; i+) sum += i; System.Diagnostics.Debug.Print(“第0次循环:1“, i,sum); 调试信息只在调试输出窗口中显示,不会在设计窗体上显示。在进行需要大量时间的后台操作时,这种方法很有用。,2 Windows窗体基本控件,2.1 控件中常用的属性和方法 1.常用基本属性 除了书上讲的属性外,还要注意以下属性的用法: 1) (Name):指定控件的名称,它是控件在当前应用程序中的唯一标识,代码通过该属性来访问控件 2) Enabled:决定控件是否可用,取值为true时可用,取值为false时不可用 3)Anchor属性:保持控件与边框的距离不变 4)Dock属性:让控件始终紧靠边框,2.1 控件中常用的属性和方法,2.Anchor属性用法举例,2.1 控件中常用的属性和方法,3.常用方法 Focus方法:让控件获得焦点 如果希望窗体一开始就让某个控件获得焦点,可以在窗体的 Shown事件中实现 各种控件都有自己常用的方法(后面会逐一介绍),2.2 TextBox控件,1.文本框控件常用的基本属性 1) Text:表示文本框中显示的内容。 2) MaxLength:用户可以键入的最多字符数。 3) Multiline:是否显示多行内容。 4) PasswordChar:输入密码字符时显示的符号。 2. TextBox控件常用的基本事件 TextChanged:文本框中的内容更改时触发。 3.举例: 在一个文本框中输入内容,在另一个文本框中同时显示,2.3 MaskedTextBox控件,1. 用途: 通过掩码限制用户输入的信息。 2. 常用属性 Mask属性:设置掩码 3. 常用事件 TypeValidationCompleted事件 4. 举例:,private void Form1_Load(object sender, EventArgs e) maskedTextBox1.ValidatingType = typeof(System.Int32); ,private void maskedTextBox1_TypeValidationCompleted(object sender, TypeValidationEventArgs e) if (!e.IsValidInput) MessageBox.Show(“请输入数字“); ,2.4 RichTextBox控件,1.常用属性 (1)SelectionFont 表示当前选中文本或所要输入文本的字体、大小、效果等 (2)SelectionColor 表示当前选中文本或所要输入文本的颜色,2.常用方法 AppendText方法: 添加文本信息 3.举例: (RichTextBoxExample),2.5 CheckBox控件,1.三种状态 2.常用属性 Checked属性 3.常用事件 CheckedChanged事件,2.6 RadioButton控件,1.特点: (1)单选 (2)以各自所在的容器来划分组,如果在一个窗体上创建多个单选按钮组,可以使用GroupBox或者Panel控件作为容器。 2.除了是单选外,其他用法与CheckBox用法相同。,2.7 ListBox控件,1.用法及属性有些类似于CheckedListBox。 2.常用属性 1)Items:描述控件对象中的所有项 2)MutiColumn:是否以多列的形式显示各项 3)SelectionMode: None、One、MultiSimple、MultiExtended 4)SelectedIndex:当前选定项的索引号 5)SelectedItems:当前选定项 3.常用事件 SelectedIndexChanged:当SelectedIndex属性值更改时触发。 4.举例:,2.7 ListBox控件,21,新建一个windows应用程序项目,添加一个ListBox控件和两个Button控件,设置属性如表所示。,22,private void button1_Click(object sender, EventArgs e) for (int i = 0; i listCountry.Items.Count; i+) listCountry.SelectedIndex = i; ,23,private void button2_Click(object sender, EventArgs e) bool b; for (int i = 0; i listCountry.Items.Count; i+) b = ! listCountry.GetSelected(i); listCountry.SetSelected(i, b); ,2.8 CheckedListBox控件,1.常用属性 (1) Items属性:项的集合 (2) Count属性:项的数目 (3) CheckOnClick属性:首次单击时是否改变状态 (4) MultiColumn属性:是否多列显示 (5) CheckedItems属性:选中项的集合 2.常用事件:SelectedIndexChanged事件 3.例:(checkedListBoxExamlple) 删除选中项: for (int i = checkedListBox1.CheckedItems.Count - 1; i = 0; i-) checkedListBox1.Items.Remove(checkedListBox1.CheckedItemsi); ,2.9 ComboBox控件,1.由两部分组合而成:一个文本框和一个列表框 2.常用属性 1) DropDownStyle属性:Simple、DropDown、DropDownList 2) Items属性:与ListBox的Item属性用法相同 3) SelectedItem属性:与ListBox的SelectedItem属性用法相同 4) SelectedIndex属性:与ListBox的SelectedIndex属性用法相同 5) SelectedValue属性(只有在数据绑定中才用此属性,第8章再讲) 3.常用方法 1) Add方法、Remove方法、Insert方法 2) AddRange方法 3) Clear方法 4.常用事件:SelectedIndexChanged事件,26,利用ComboxBox控件加载系统所有字体,27,using System.Drawing.Text; private void button1_Click(object sender, EventArgs e) InstalledFontCollection fontCollection = new InstalledFontCollection(); for (int i = 0; i fontCollection.Families.Length; i+) comboFont.Items.Add(fontCollection.Familiesi.Name); ,练习题,2.10 Timer组件,1.检查是否到达事先规定的时间间隔,并在到达时间间隔时触发的事件中执行需要的功能。 2.常用属性 1)Enabled:是否启用计时,false表示停止计时,true表示开始计时(也可以用Start方法和Stop方法,效果相同)。 2)Interval:触发Tick事件的间隔时间,以毫秒为单位。 3.事件 Tick:每隔Interval属性指定的时间都会触发此事件。,2.10 Timer组件,4.举例 显示循环向上滚动的动画字幕(TimerExample),2.11 PictureBox控件,1.常用属性 1) Image:获取或设置显示的图像 2) SizeMode:AutoSize、CenterImage、Normal、StretchImage、Zoom 3) Parent(仅代码方式下可用):获取或设置父级控件 2.举例1:例5-11 举例2:图片透明叠加(TransparentExample),3 菜单与工具栏,3.1 MenuStrip控件 1.可以在窗体的顶部、底部以及窗体的任何一个位置显示菜单。 2.常用属性 (1) DisplayStyle:菜单项上的显示样式。 (2) Image:指定在该菜单项上显示的图标。 (在C:Program FilesMicrosoft Visual Studio 9Common7VS2008ImageLibrary下有一个.zip文件,内有各种动画文件、图像文件和图标文件,例如展开后在目录Objectspng_formatWinVista下有打开、保存等图像。) (3) ShortcutKeys:快捷键。 3.常用事件:Click事件,3 菜单与工具栏,菜单的几种形式:,Dock:Top,Dock:Bottom,3.2 ContextMenuStrip控件,1.用于制作右键快捷菜单 2.使用该控件的关键是将需要显示快捷菜单的控件的ContextMenuStrip属性设置为添加的ContextMenuStrip控件对象。 (书上例子漏了这一步) 3.除了是右键弹出菜单外,其他用法与MenuStrip相同。,3.3 ToolStrip与StatusStrip,1.作用 为窗体添加工具栏(ToolStrip)或者状态栏(StatusStrip)。工具栏和状态栏一般是由多个按钮、标签等排列组成,通过这些项可以快速地执行程序提供的一些常用命令或者显示一些状态信息。 2.常用属性和事件与MenuStrip控件基本相同。,3.4 BackgroundWork和进度条,1.BackgroundWork组件 (1)用于后台执行耗时的处理(单独的线程),避免长时间运行时可能会导致用户界面似乎处于停止响应状态。 (2)在后台利用DoWork事件调用耗时的操作。 注意:不要在DoWork事件中操作任何界面对象。 (3)利用ProgressChanged事件通知进度。 (4)利用RunWorkerCompleted事件处理操作完成时的工作。 2.如何启动后台操作 (1)调用BackgroundWork对象的RunWorkerAsync方法。 (2)调用时,可以将对象作为参数传递给后台线程。,3.4 BackgroundWork和进度条,3.在前台用StatusStrip中的ToolStripProgressBar显示后台正在处理的进度。 4.ProgressBar举例1:在后台执行一个循环,在界面中显示进度。(如果不用后台操作,在执行循环中会看到操作控件时会像死机一样),3.4 BackgroundWork和进度条,3.VS2005建议用StatusStrip中的ToolStripProgressBar替换ProgressBar,但是在实际应用中,发现还是原来的ProgressBar比较好用。 4.ProgressBar举例:用无损压缩算法压缩文件,并显示压缩进度(只注意进度条是如何实现的即可)。,4 其他Windows窗体控件,4.1 ToolTip组件 1. 用途:鼠标位于某个控件上,显示该控件功能的提示信息。 2.当向窗体中添加一个ToolTip组件后,该窗体中的其他控件,包括窗体本身,【属性】对话框中都将会出现一个新的属性“ToolTip1上的ToolTip”。 3. 还可以将ToolTip显示为下图的形状(ToolTipExample):,ToolTip 的一种形式,4.2 SplitContainer控件,1.功能 (1)用于将窗体或者Panel控件分隔为几部分 (2)用于实现一些特殊的窗体效果 2.举例(SplitContainerExample,下图为设计窗体,变换后的效果见下页),4.2 SplitContainer控件,左边全部折叠,右边右部全展开,左边中间展开,右边边缘停靠,左边中间展开,右边左部全展开,左边展开两个,右边右部全展开,选项卡控件,使用TabControl类封装。在这类控件中,通常在上部有一些标签供选择,每个标签对应一个选项卡页面TabPage。选中一个标签就会显示相应的页面而隐藏其他页面。通过这个方式,可以把大量的控件放在多个页面中,通过选项卡标签迅速切换。一个很常见的例子是Windows系统的“显示属性”对话框。 选项卡属性 TabPages属性,这是一个选项卡页面的集合,可以通过它对选项卡的标签项进行管理。 在属性窗口中单击TabPages属性右边的按钮,显示“TabPage集合编辑器”对话框,通过它来添加删除选项卡页面和设置页面属性。如图。 要为添加后的特定页面添加控件,通过选项卡控件的标签切换到相应页面,再选中该页面,然后把控件拖动到页面中。,Alignment属性,指定选项卡的标签位于控件的什么位置,是一个TabAlignment枚举类型,有Top (默认),Bottom,Left,Right四个值。 Appearance属性,指定标签的外观,有三种风格:Buttons、FlatButtons、Normal(默认)。 只有当标签位于顶部时,才可以设置FlatButtons风格;位于其他位置时,将显示为Buttons。 MultiLine属性,指定是否可以显示多行标签。 默认情况为单行显示,在标签超出选项卡可视范围时自动使用箭头按钮来滚动标签。 当把标签定位于选项卡的左边或右边时,MultiLine属性自动为true。,4.3 TabControl控件,ItemSize属性,指定标签的大小。 SizeMode属性,指定标签是否自动调整大小来填充标签行。枚举类型TabSizeMode定义了三种取值。 Normal:根据每个标签内容调整标签的宽度 Fixed:所有标签宽度相同 FillToRight:调整标签宽度,使其填充标签行(只有在多行标签的情况下进行调整) TabCount属性,指定控件中所包含的标签的数量。 SelectedIndex属性,当前所选中标签的索引。若没有选中项,返回-1。 SelectedTab属性,当前所选中标签的引用。若没有选中项,返回null。,4.3 TabControl控件,管理TabPages属性的方法 可以提供索引访问 tabControl1.TabPages0.Text = “ 背景 ”; 添加TabPage对象:Add或者AddRange方法。 删除TabPage对象:Remove方法(参数为TabPage引用)或RemoveAt方法(参数为索引值) 清除所有的TabPage对象:Clear方法。 SelectedIndexChanged事件 改变当前选择的标签时触发这个事件 可以在这个事件的处理中根据程序状态来激活或禁止相应页面的某些控件。 示例程序,4.3 TabControl控件,4.3 TabControl控件,1.用途 当需要有多个选项卡窗口时,可以使用此控件 2.举例:(TabControlExample),4.4 ListView控件,1.用途 按不同方式显示列表视图信息 2.举例:,列表视图,用ListView类封装,与列表框类似都是显示一些项的列表的控件,但功能更强大。 列表视图中可以使用4中不同方式显示列表项:大图标、小图标、列表和详细信息模式,可以在应用程序中选择使用任何一种或是所有的方式。,列表视图属性 View属性,指定列表视图的显示模式,属性值在枚举类型View中指定 LargeIcon,显示大图标,并在图标的下面显示标题。 SmallIcon,显示小图标,并在图标的右边显示标题。 List,每项包含一个小图标和一个标题,并使用列来组织列表项,但每列都没有表头。 Details,使用报表的形式显示列表项,每项占一行。最左边的一列显示该项的小图标和标题,其他列显示该项的子项。这种方式还可以包含一个表头,显示每列的标题,可以在运行时通过表头来改变列的宽度。,4.4 ListView控件,HeaderStyle属性。在详细信息模式下,列表视图会显示表头。使用这个属性来设置表头的不同风格,取值由枚举类型ColumnHeaderStyle设定 Clickable,显示表头,并且它可以响应单击事件。 Nonclickable,显示表头,但它不响应单击事件。 None,不显示表头。 LargeImageList属性和SmallImageList属性 在大图标模式下,显示LargeImageList中的图像列表; 在其他三个模式下,显示SmallImageList中的图像列表。 MultiSelect属性,设置列表视图是否可以选择多项。默认为只能选择一项。 Sorting属性,指定是否对列表项进行排序。 Scrollable属性,指定是否显示滚动条。,4.4 ListView控件,为列表视图添加列表头和列表项 添加列表头(ColumnHeader类) 在属性窗口中单击Columns属性旁带省略号的按钮,打开“ColumnHeader集合编辑器”对话框。单击其中的“添加”按钮添加一个新的列表头,并在右边可以设置它的属性:Name设置表头名称,Text设置表头标题,Width属性设置列宽度,TextAlign属性设置列的对齐方式等等。 使用代码添加的例子 listView1.Column.Add(“Drive”,100, HorizontalAlignment.Left); 其中参数分别表示列名称,列宽度和列对齐方式。,4.4 ListView控件,添加列表项(ListItem类) 单击列表视图属性窗口中Items属性旁的按钮,打开“ListViewItem集合编辑器”对话框。类似添加列表头的操作添加列表项。其中ImageIndex设置列表项对应的图像索引,Text设置列表项的标题。 在包含多列的情况下,要为列表项添加子项。单击对话框中SubItems属性旁的按钮,打开“ListViewSubItem集合编辑器”对话框,在其中添加子项。其中第一个子项的标题就是列表项的标题。 使用代码添加的例子 listView1.Items.Add( listViewItem1 ); 其中listViewItem1表示一个列表项对象实例。,4.4 ListView控件,Items属性,包含列表视图中的所有项。可以对其使用索引访问,得到其中的单个项。 每个列表项具有SubItems属性来访问它的各个子项。比如,listView1.Items0.SubItems0。 在插入列表项时,列表项本身对应列表视图的第一列,它的子项对应视图的其他各列。除了详细信息模式外,其他的显示模式都只显示第一列。 SelectedIndices属性和SelectedItems属性,获取当前选择的项。 LabelEdit属性,设置在运行时是否可以改变列表项的标题。,4.4 ListView控件,列表视图的方法 BeginUpdate和EndUpdate Clear GetItemAt方法,返回指定位置(x,y)的列表项。 列表视图的事件 ColumnClick事件,单击列表头时触发这个事件。可以在这个事件的处理过程中编写代码对列表视图进行排序。 SelectedIndexChanged事件,对列表视图中项的选择发生改变时触发这个事件。,4.4 ListView控件,神奇的ListView,ListView :列表视图控件,以特定样式或视图类型显示列表项,大小图标切换,模拟“我的电脑”,实现大小图标切换,需要用到的属性,存放其他控件使用的图片,图像列表ImageList,图像列表ImageList的属性,练习1显示QQ好友头像和昵称,需求说明: 设计QQ好友窗体 在窗体上显示好友的头像和昵称,能够切换大头像和小头像,完成时间:15分钟,ListView的详细信息视图,列的集合 Columns,项的集合 Items,列表视图项ListViewItem,列表视图项的子项ListViewSubItem,子项的集合 SubItems,显示详细视图,模拟“我的电脑”详细视图,需要用到的属性,快捷菜单ContextMenuStrip,通过快捷菜单切换视图,为控件指定快捷菜单:ContextMenuStrip 属性,练习2显示QQ好友详细信息,需求说明: 在上一个练习基础上完善 在窗体上显示好友的详细信息:QQ号码、性别、年龄,通过快捷菜单实现3种视图的切换,完成时间:15分钟,动态添加ListView的数据,如何用代码向ListView中添加数据?,实现动态添加,创建ListViewItem对象 添加子项: 添加到ListView的Items集合中:,ListViewItem对象.SubItems.Add(); / 每次添加一个子项 / 一次添加多个子项 ListViewItem对象.SubItems.AddRange(字符串数组);,ListView对象.Items.Add();,关键代码分析-1,lvMyComputer.View = View.LargeIcon;,/ 设置大图标关联的ImageList lvMyComputer.LargeImageList = this.ilLarge; / 设置小图标关联的ImageList lvMyComputer.SmallImageList = this.ilSmall;,设置ListView的视图,View属性,通过View类型 获取视图种类,设置ListView关联的ImageList,关键代码分析-2,/ 创建ListView的项 ListViewItem itemC = new ListViewItem(“C盘“,0); / 向项中添加子项(方式一) itemC.SubItems.Add(“本地磁盘“); itemC.SubItems.Add(“14.2GB“); itemC.SubItems.Add(“4.54GB“); /向项中添加子项(方式二) itemC.SubItems.AddRange( new string“本地磁盘“, “14.2GB“, “4.54GB“); / 将项添加到ListView中 lvMyComputer.Items.Add(itemC);,ListView的项,添加子项,创建项,添加项和子项,练习3编码添加好友信息,需求说明: 重新实现上一个练习 好友的信息全部通过编码添加到ListView中 通过右键菜单实现视图切换,完成时间:20分钟,总结,如何获得ImageList中的某一张图片? ListView控件详细信息视图时,要设置哪些内容?画出它们的关系 通过哪个属性切换ListView的视图?,4.5 TreeView控件,1.用途 以树形方式显示信息 2.举例,TreeView动态绑定信息,使用TreeView控件创建树形菜单,实现 单击子节点,文本框中显示相应节点文本 单击“添加根节点”,在TreeView中添加一个根节点 选中某节点,单击“添加子节点”,在选中节点下添加子节点,根节点,子节点,组成子节点集合,TreeView的使用2-1,TreeView 控件重要属性和事件,TreeView的使用2-2,节点对象(TreeNode)的属性,TreeView的应用,获取当前选中的节点 this.tvMenu.SelectedNode返回TreeNode对象 为TreeView控件添加根节点(一级节点) 为某选中节点添加子节点,TreeNode rootNode = new TreeNode(“音乐频道“); this.tvMenu.Nodes.Add(rootNode);,TreeNode rootNode; rootNode = this.tvMenu.Nodes.Add(“音乐频道“);,this.tvMenu.SelectedNode.Nodes.Add(node);,添加节点,展开折叠,展开折叠当前节点,TreeView的应用,删除节点 清空节点,this.tvMenu.SelectedNode.Remove();,this.tvMenu.SelectedNode.Nodes.Clear();,this.tvMenu.Nodes.Clear(); /清空TreeView控件中所有节点,经常用在刷新TreeView显示前,删除节点,选择节点,添加图片,添加AfterCheck事件,

    注意事项

    本文(Windows窗体界面设计.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开