版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 . . . 目录1 采用技术11.1. visual studio 2010编辑环境11.2.C#的窗体编程12 选题说明23 总体说明33.1程序的基本结构33.2程序的主要技术34详细说明44.1 界面设计45 遇到的问题和解决方法105.1 未考虑到生成文档窗体在主窗体中的显示105.2 不知到什么属性被修改,导致主窗体关闭失效105.3 未考虑到文档关闭时,文档是否保存106 程序详细设计代码116.1 主窗体结构和属性值116.2 工具栏实现136.3 打开、保存文件的代码实现:146.4 退出时的代码:156.5 编辑栏功能的实现(剪切、复制等)166.6 字体和颜色部分的实现1
2、76.7 在状态栏实时显示光标的位置196.8 查找替换页的实现206.9 打印功能实现23参考文献2828 / 32摘要C#文本编辑器是一个关于文本编辑器的小程序,运用一些简单的记事本的基本操作功能来实现的。该程序利用C#程序编写,在Visual Studio 2010的环境下进行调试运行的,能够对文本进行简单编辑处理,如:剪切、复制等。对于该程序开发,必须达到以下要求:1、熟悉.NET开发环境,能够使用C#语言在.NET平台上独立设计、开发WINDOWS应用程序。 2、掌握C#语言的异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮助的使用方法。 3、掌握常用控件以与控件的常用属性
3、的使用方法。4、界面要做到简洁易懂,具有人性化等特点。5、程序没有在使用过程中不存在任何的问题。 6、通过使用C#编写程序,可以发现能完成任务,能够编写出文本编辑器应有的基础功能。引言文本编辑器是常用的简便工具。本设计完成的功能类似于Windows操作系统的记事本工具,又添加了多文档接口支持,以与更丰富的字体样式控制。利用C#完成文本编辑器的开发,实现以下功能:文档读写:打开文件(包括普通文本文件和富文本文件); 保存文件(包括另存为);文档编辑(包括输入、修改、复制、粘贴、重做、撤销、查找、替换、设置字体样式等);打印与打印页面设置;配置功能,完成状态栏的显示设置和文件的定时自动保存设置;操
4、作系统和软件开发包往往都提供文本编辑器,用以修改配置文件和程序的源代码。市场上出现的和用户所使用的文本编辑器种类繁多,功能也是各式各样,其中有相当一部分是很优秀的。但是面向底层用户的的操作简单的,界面友好的,集文本操作、编辑操作、格式操作于一体的编辑器并不多见。目前市面上现有的如office中的word还有WPS等大众文本编辑器虽然功能也十分齐全,但是本身往往就是数百兆甚至几个G,占用资源非常大,而且对于电脑本身的性能要求也比较高,甚至有部分专业的文本编辑器需要付费使用。 本次毕业设计所研究的就是编写一个功能完整,占用资源较少的,操作简单适用于大众的文本编辑器。该编辑器要求可以实现新建、保存、
5、打开等基本文件操作,还要求具有复制、粘贴、剪切、撤消等基本文本编辑操作以与字体选择、颜色设置、格式设置等格式操作。同时,该文本编辑器号要求具备丰富的快捷方式和热键,以方便用户进行操作,降低操作难度,提高工作效率。同时,由于文本编辑器要求占用资源少,所以本身需要启动的进程必须较少,以节约系统资源。而满足上述条件的文本编辑器目前市面上尚未出现,因此本次课程设计研究十分具备可行性。1 采用技术1.1. visual studio 2010编辑环境Visual Studio 是微软公司推出的开发环境。是目前最流行的 Windows 平台应用程序开发环境。目前已经开发到 10.0 版。 Visual S
6、tudio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。Visual Studio 是一套完整的开发工具集,用于生成 ASP.NET Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic、Visual C+、Visual C# 和 Visual J# 全都使用一样的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助于创建混合语言解决方案。另外,这些语言利用了 .NET Framework 的功能,通过此框架可使用简化 ASP Web
7、应用程序和 XML Web Services 开发的关键技术。1.2.C#的窗体编程Windows 窗体是用于 Microsoft Windows 应用程序开发的、基于 .NET Framework 的新平台。此框架提供一个有条理的、面向对象的、可扩展的类集,使您能够开发功能丰富的 Windows 应用程序。另外,Windows 窗体可作为多层分布式解决方案中的本地用户界面。窗体是一种文档,可以用来收集信息。它包括两部分,一部分是由窗体设计者输入的,填写窗体的人无法更改的文字或图形。窗体设计者可以插入希望得到回答的问题、选项列表、信息表格等。另一部分是由窗体填写者输入的,用于从填写窗体者处收集
8、信息并进行整理的空白区域。窗体设计者可以在文档中插入窗体域或 ActiveX 控件,为窗体填写者提供用于收集数据的位置。2 选题说明随着科技的发展,人们对精神生活要求的越来越高,纸质的手动式的书写方式已经不是能够代表新世纪的生活需要了,所以现在各种不同功能的文本编辑器已经悄悄走进我们的生活和学习中,像简单的就有记事本。 但是一个简单的文本编辑器也是很重要的,是基础。所以在结合自己的一个学期的很认真的学习c#后,决定自己编译一个类似与记事本的,但功能比记事本强大的文本编辑器。3 总体说明3.1程序的基本结构操作界面的主窗口为文本编辑器的主入口,类似于记事本的形式,菜单栏要如下的几项(),另外还有
9、两个简单的toolstripe式的图片按钮,分别是新建和保存。当点击新建的时候,会弹出我们将要编辑的文档文本窗口,这是我们编写文字的地方。书写完毕后,要先确认是否保存此文件夹,这样就不会发生自己所编辑的容会丢失。3.2程序的主要技术(1) 编写要先新建,编写之后要有保存功能;(2) 还可以设置文字的字体字形和字体的颜色;(3) 实现文字替换与查找功能;(4) 可以进行打印、打印预览;(5)状态栏能够实时反映输入状态;4 详细说明4.1 界面设计打开Visual Studio 2010开发工具,新建一个Windows应用程序,然后在窗体上依次放置1个MenuStrip菜单栏和1个ToolStri
10、p工具栏,如图4-1所示(设置好属性后)。图4-1 编辑器用户界面运行程序,新建文档。如图4-2所示。图4-2新建文本文档运行程序,设置字体的大小和粗细,以与字体的颜色。如图4-3所示图4-3 字体大小与颜色单击保存按钮,保存所编辑的文本。结果如图4-4所示。图4-4 保存文本单击文件按钮,能够实现如下的功能,结果如图4-5所示。图4-5 菜单文件的功能单击编辑按钮,功能如下,结果如图4-6所示图4-6 菜单编辑的功能状态栏的功能,结果如图4-7所示:图4-7 状态栏的功能为了确保退出前能够保存文件,减少误操作,在关闭窗口时加入了提示功能,结果如图4-8所示:图4-7 状态栏的功能查找和替换功
11、能的实现,结果如图4-8所示:图4-8 查找和替换功能5 遇到的问题和解决方法5.1 未考虑到生成文档窗体在主窗体中的显示解决办法:在参照样的时候例程序,发现文档是显示在主窗体部,结合自己的所学,发现设置主窗体的属性记事本()。 f.MdiParent = this; count+; f.Text = "新建文本" + count;设置成Mdiparent属性即可。5.2 不知到什么属性被修改,导致主窗体关闭失效 解决办法:在菜单文件中设置关闭程序的命令,并申请了菜单合并,不需要在新建文档的情况下就能关闭主窗体,现在仍然留下一个让人深究的问题,究竟是什么样的属性才是控制最大
12、化,最小化,以与关闭的显隐性,有待继续学习。这是自己在程序完成的时候出现的意外,但是确是我在编写过程中遇到的最大难题。5.3 未考虑到文档关闭时,文档是否保存解决办法:这是细节问题,其实是很容易做到,当关闭的时候显示一个对话框提示一下即可。6 程序详细设计代码6.1 主窗体结构和属性值控件属性属性值说明FormNamefrmEditorText文本文件编辑器Font宋体,五号MenuStripNamemsEditor菜单条ToolStripMenuItemNamemnFile文件菜单Text文件ToolStripMenuItemNamemiFileNewText新建ToolStripMenuI
13、temNamemiFileOpenText打开ToolStripMenuItemNamemiFileSaveText保存ToolStripMenuItemNamemiFileSaveAsText另存为ToolStripMenuItemNamemiFileExitText退出ToolStripMenuItemNamemnEdit编辑菜单Text编辑ToolStripMenuItemNamemiEditCutText剪切ToolStripMenuItemNamemiEditCopyText复制ToolStripMenuItemNamemiEditPasteText粘贴ToolStripMenuIt
14、emNamemiEditUnDoText撤消ToolStripMenuItemNamemiEditReDoText恢复ToolStripMenuItemNamemiEditFindText查找ToolStripMenuItemNamemiEditReplaceText替换ToolStripMenuItemNamemnStyle格式菜单Text格式ToolStripMenuItemNamemiStyleFontText字体ToolStripMenuItemNamemiStyleColorText颜色ToolStripMenuItemNamemiStyleAlignLeftText左对齐ToolS
15、tripMenuItemNamemiStyleAlignCenterText中对齐ToolStripMenuItemNamemiStyleAlignRightText右对齐ToolStripMenuItemNamemiStyleIndentText缩进ToolStripMenuItemNamemnPrint打印菜单Text打印ToolStripNametsEditor工具条StatusStripNamessEditor状态条RichTextBoxNamertbEditor富格式文本编辑器DockFillOpenFileDialogNamedlgOpen打开文件对话框PrintDocumentN
16、amedocPrint打印文档控件6.2 工具栏实现制作图标:每个按钮做一个图标文件,大小为16*16,参见FileNew.bmp,FileOpen.bmp,FileSave.bmp,EditCut.bmp,EditCopy.bmp,EditPaste.bmp。制作按钮:在工具栏添加按钮并装入每个按钮的图象,图标命名:tsbFileName,tsbFileOpen,tsbFileSave,sbEditCut,tsbEditCopy, tsbEditPaste控件属性属性值说明ToolStripButtonNametsbFileNew新建文件ImageFileNew.bmpimageTransp
17、arentColorOliveToolStripButtonNametsbFileOpen打开文件ImageFileOpen.bmpimageTransparentColorOliveToolStripButtonNametsbFileSave保存文件ImageFileSave.bmpimageTransparentColorOliveToolStripButtonNametsbEditCut剪切ImageEditCut.bmpimageTransparentColorOliveToolStripButtonNametsbEditCopy编辑ImageEditCopy.bmpimageTran
18、sparentColorOliveToolStripButtonNametsbEditPaste粘贴ImageEditPaste.bmpimageTransparentColorOlive设计完成后的效果如下图:6.3 打开、保存文件的代码实现:打开:private void miFileOpen_Click_1(object sender, EventArgs e) dlgOpen.Filter = "文本文件(*.txt)|*.txt|富格式文件 (*.rtf)|*.rtf|所有文件(*.*)|*.*" if (dlgOpen.ShowDialog() = Dialog
19、Result.OK) _fileName = dlgOpen.FileName; if (Path.GetExtension(_fileName) = ".rtf") rtbEditor.LoadFile(_fileName, RichTextBoxStreamType.RichText); else rtbEditor.LoadFile(_fileName, RichTextBoxStreamType.PlainText); 保存(另存为):private void miFileSaveAs_Click(object sender, EventArgs e) / 动态创建
20、一个文件保存对话框 SaveFileDialog dlgSave = new SaveFileDialog(); / 设置保存对话框的默认参数 dlgSave.InitialDirectory = "c:tmp" dlgSave.Filter = "文本文件(*.txt)|*.txt|富格式文件 (*rtf)|*.rtf|所有文件(*.*)|*.*" dlgSave.Title = "保存我的文件" / 显示保存对话框 if (dlgSave.ShowDialog() = DialogResult.OK)/ 表示按下“确认”按钮 _f
21、ileName = dlgSave.FileName; / 如果扩展名为rtf格式,则以RTF格式保存文件,否则 以普通文本格式保存文件 if (Path.GetExtension(_fileName) = ".rtf") rtbEditor.SaveFile(_fileName, RichTextBoxStreamType.RichText); else rtbEditor.SaveFile(_fileName, RichTextBoxStreamType.PlainText); 6.4 退出时的代码: private void miFileExit_Click(obje
22、ct sender, EventArgs e) DialogResult result; result = MessageBox.Show("退出前是否保存", "退出", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (result = DialogResult.No) this.Close(); else if (result = DialogResult.Yes) SaveFileDialog dlgSave = new SaveFileDialog(); / 设置保存对话框
23、的默认参数 dlgSave.InitialDirectory = "c:tmp" dlgSave.Filter = "文本文件(*.txt)|*.txt| (*rtf)|*.rtf|所有文件(*.*)|*.*" dlgSave.Title = "保存我的文件" / 显示保存对话框 if (dlgSave.ShowDialog() = DialogResult.OK) / 表示按下“确认”按钮 _fileName = dlgSave.FileName; / 得到用户指 定的文件名 / 如果扩展名为rtf格式,则以RTF格式保存文件, 否
24、则以普通文本格式保存文件 if (Path.GetExtension(_fileName) = ".rtf") rtbEditor.SaveFile(_fileName, RichTextBoxStreamType.RichText); else rtbEditor.SaveFile(_fileName, RichTextBoxStreamType.PlainText); 6.5 编辑栏功能的实现(剪切、复制等)private void miEditCut_Click(object sender, EventArgs e) rtbEditor.Cut(); private
25、void miEditCopy_Click(object sender, EventArgs e) rtbEditor.Copy(); private void miEditPaste_Click(object sender, EventArgs e) rtbEditor.Paste(); private void miEditReDo_Click(object sender, EventArgs e) rtbEditor.Redo(); private void miEditUnDo_Click(object sender, EventArgs e) rtbEditor.Undo(); 6.
26、6 字体和颜色部分的实现private void miStyleFont_Click(object sender, EventArgs e) / 创建字体对话框 FontDialog dlgFont = new FontDialog(); dlgFont.ShowColor = true; dlgFont.ShowApply = true; / 设置字体对框的默认字体, / 如果已经有选择文本,则设置为选择文本的字体和颜色 / 否则设置为全文的字体和姿色 if (rtbEditor.SelectionLength > 0) dlgFont.Font = rtbEditor.Selecti
27、onFont; dlgFont.Color = rtbEditor.SelectionColor; else dlgFont.Font = rtbEditor.Font; dlgFont.Color = rtbEditor.ForeColor; / 显示字体对话框,且用户按下了“确认”按钮 if (dlgFont.ShowDialog() = DialogResult.OK) / 如果有选择文件,刚修改选择文本的字体和颜色 if (rtbEditor.SelectionLength > 0) rtbEditor.SelectionFont = dlgFont.Font; rtbEdito
28、r.SelectionColor = dlgFont.Color; / 否则修改整个文本的字体和颜色 else rtbEditor.Font = dlgFont.Font; rtbEditor.ForeColor = dlgFont.Color; private void miStyleColor_Click(object sender, EventArgs e) ColorDialog dlgColor = new ColorDialog(); if (dlgColor.ShowDialog() = DialogResult.OK) if (rtbEditor.SelectionLength
29、 > 0) rtbEditor.SelectionColor = dlgColor.Color; else rtbEditor.ForeColor = dlgColor.Color; 6.7 在状态栏实时显示光标的位置响应文本编辑器rtbEditor的MouseDown消息,得到光标的位置,进而得到光标的行号和列号。响应文本编辑器rtbEditor的KeyUp消息,得到光标的位置,进而得到光标的行号和列号。 private void rtbEditor_MouseDown(object sender, MouseEventArgs e) / 根据光标所在象素位置,得到字符索引号 int
30、nCharIndex = rtbEditor.GetCharIndexFromPosition(new Point(e.X, e.Y); / 根据字符索引号,得到所在行号和列号 int nRowNo = rtbEditor.GetLineFromCharIndex(nCharIndex); int nFirstCharIndex = rtbEditor.GetFirstCharIndexFromLine(nRowNo);int nColNo = nCharIndex - nFirstCharIndex; / 在状态栏上显示行号和列号 tsslRowNo.Text = string.Format
31、("行:0", nRowNo + 1); tsslColNo.Text = string.Format("列:0", nColNo); private void rtbEditor_KeyUp(object sender, KeyEventArgs e) / 根据光标所在位置,得到字符索引号 int nCharIndex = rtbEditor.SelectionStart;/ 根据字符索引号,得到所在行号和列号 int nRowNo = rtbEditor.GetLineFromCharIndex(nCharIndex);int nFirstCharI
32、ndex = rtbEditor.GetFirstCharIndexFromLine(nRowNo);int nColNo = nCharIndex - nFirstCharIndex; / 在状态栏上显示行号和列号 tsslRowNo.Text = string.Format("行:0", nRowNo + 1); tsslColNo.Text = string.Format("列:0", nColNo);6.8 查找替换页的实现添加一个新的窗体文件控件属性属性值说明FormNamefrmFindAndReplace查找与替换Text查找和替换Font
33、宋体,五号TopMostTrue总显示在最上面TabControlNametabControl1卡片控制TabPageNametabFind卡片页:查找Text查找TabPageNametabReplace卡片页:替换Text替换TextBoxNametxtFindFind查找页:查找文本CheckBoxNamecbFindWholeWord查找页:全字匹配Text全字匹配CheckBoxNamecbFindMatchCase查找页:区分大小写Text区分大小写ButtonNamebtnFindFindNext查找页:查找下一个Text查找下一个ButtonNamebtnFindCancel查
34、找页:取消Text取消TextBoxNametxtReplaceFind替换页:查找文本TextBoxNametxtReplaceReplace替换页:替换文本CheckBoxNamecbReplaceWholeWord替换页:全字匹配Text全字匹配CheckBoxNamecbReplaceMatchCase替换页:区分大小写Text区分大小写ButtonNamebtnReplaceFindNext查找页:查找下一个Text查找下一个ButtonNamebtnReplaceReplace查找页:替换Text替换ButtonNamebtnReplaceReplaceAll查找页:全部替换Tex
35、t全部替换ButtonNamebtnReplaceCancel查找页:取消Text取消private void btnFindFindNext_Click(object sender, EventArgs e) _findStr = txtFindFind.Text; _findOption = RichTextBoxFinds.None; if (cbFindWholeWord.Checked) _findOption |= RichTextBoxFinds.WholeWord; if (cbFindMatchCase.Checked) _findOption |= RichTextBoxF
36、inds.MatchCase; _editor.Find(_findStr, _findOption); private void btnFindCancel_Click(object sender, EventArgs e) Close(); private void btnReplaceFindNext_Click(object sender, EventArgs e) _findStr = txtReplaceFind.Text; _findOption = RichTextBoxFinds.None; if (cbReplaceWholeWord.Checked) _findOptio
37、n |= RichTextBoxFinds.WholeWord; if (cbReplaceMatchCase.Checked)_findOption |= RichTextBoxFinds.MatchCase; _editor.Find(_findStr, _findOption); private void btnReplaceReplace_Click(object sender,EventArgs e) _findStr = txtReplaceFind.Text; _replaceStr = txtReplaceReplace.Text; _findOption = RichText
38、BoxFinds.None; _editor.Replace(_findStr, _replaceStr, _findOption); if (cbReplaceWholeWord.Checked) _findOption |= RichTextBoxFinds.WholeWord; if (cbReplaceMatchCase.Checked) _findOption |= RichTextBoxFinds.MatchCase; private void btnReplaceReplaceAll_Click(object sender, EventArgs e) _findStr = txt
39、ReplaceFind.Text; _replaceStr = txtReplaceReplace.Text; _findOption = RichTextBoxFinds.None; if (cbReplaceWholeWord.Checked) _findOption |= RichTextBoxFinds.WholeWord; if (cbReplaceMatchCase.Checked) _findOption |= RichTextBoxFinds.MatchCase; _editor.ReplaceAll(_findStr, _replaceStr, _findOption); p
40、rivate void btnReplaceCancel_Click(object sender, EventArgs e) Close(); private void txtFindFind_TextChanged(object sender, EventArgs e) if (txtFindFind.Text != "") btnFindFindNext.Enabled = true; else btnFindFindNext.Enabled = false; 6.9 打印功能实现无论是预览还是打印,主要还是要依赖PrintDocument控件来完成的,响应该控件的Pr
41、intPage事件,在该事件响应中真正输出每页的容。下面几个功能的实现,有些容是相互关系,如:要显示或打印的容、当前显示或打印的字体、当前的打印机设置和页面设置,所以,添加四个数据成员如下:/ 下面几个数据成员用于打印 private StringReader _srPrint = null; / 打印的容 private Font _printFont; / 打印字体 PrinterSettings _printerSettings = new PrinterSettings(); / 打印机设置 PageSettings _pageSettings = new PageSettings()
42、; / 页面设置6.9.1 预览创建打印预览对话框,将当前编辑器中的文本读到一个文本流StringReader中,设置打印字体与文件编辑器中的字体一样,设置PrintDocument控件的页面设置为用户设置的值,将PrintDocument控件与预览对话框关联起来,调用预览对话框,即可预览文本编辑器中的容。private void miFilePreview_Click(object sender, EventArgs e) PrintPreviewDialog dlgprintPreview = new PrintPreviewDialog();dlgprintPreview.Documen
43、t = new System.Drawing.Printing.PrintDocument();dlgprintPreview.FormBorderStyle = FormBorderStyle.Fixed3D; dlgprintPreview.ShowDialog(); 6.9.2 打印创建打印对话框,将当前编辑器中的文本读到一个文本流StringReader中,设置打印字体与文件编辑器中的字体一样,设置PrintDocument控件的页面设置为用户设置的值,将PrintDocument控件与打印对话框关联起来,调用打印对话框,即可打印文本编辑器中的容。private void mnPrin
44、t_Click(object sender, EventArgs e) dlgprint.Document = docPrint; if (dlgprint.ShowDialog() != DialogResult.Cancel) docPrint.Print(); 6.9.3 设置打印机和设置页面这两个功能是关联的,以设置页面为主,在设置页面中包含了设置打印机功能。创建页面设置对话框,设置对话框的当前打印机参数和页面参数,显示对话框,用户可以修改打印机或页面的参数,确认后,即可保存当前的设置。private void miPrintPrinterSetup_Click(object sender, EventArgs e) / 创建页面设置对话框 PageSetupDialog dlgPageSetup = new PageSetupDialog(); / 使用用户指定的打印机设置:这里需要既设置打印机设置,还要设置页面设置 dlgPageSetup.P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售经理工作总结15篇
- 2024至2030年PVC扣板配条项目投资价值分析报告
- 二零二五年度二次供水工程结算与支付合同3篇
- 2024年师宗县妇幼保健院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 企业合同档案管理办法
- 2025年班车服务数据分析与优化合同3篇
- 审计的实习报告集锦6篇
- 系统建设合同
- 广告策划合同范本
- 北京艺术传媒职业学院《空间生物学与空间生物技术》2023-2024学年第一学期期末试卷
- 2024-2025年职业技能:全国高速公路收费员从业资格知识考试题库与答案
- 阜阳师范大学《法学概论》2023-2024学年期末试卷
- 新版中国食物成分表
- 湘教版八年级音乐下册教案全册
- 食物损失和浪费控制程序
- 特种设备安全管理电梯模拟考核题库888题(含标准答案)
- 债权法学习通超星期末考试答案章节答案2024年
- 关于农机安装合同模板
- 2024解读《弘扬教育家精神》全文
- TCCIAT 0046-2022 混凝土剪力墙结构装配式组合壳体系技术规程
- GB/Z 44118.1-2024电能质量技术管理第1部分:总则
评论
0/150
提交评论