已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
这个是很好的联系这个是很好的联系 c 的例子 把这个掌握了 的例子 把这个掌握了 c 的的 winform 基本就基本就 算掌握好了算掌握好了 第第 17 章章 记事本记事本 本章介绍如何使用 Visual C 2008 设计一个 Windows 应用程序 记事本 通过本章 的学习 可以进一步掌握 MenuStrip 菜单 ToolStrip 工具栏 RichTextBox 高级文 本框 和 StatusStrip 状态栏控件 等控件的使用 以及如何使用 CommonDialog 公共对 话框 实现对文本的存取 格式设置等操作 17 1 记事本简介记事本简介 记事本是一种常用的软件 在微软的 Windows 中 自带了一个记事本软件 Windows XP 下的记事本软件如图 17 1 所示 图 17 1 Windows 自带的记事本 本章介绍的记事本 实现了 Windows 自带的记事本的部分功能外 并且还可以任意更 改字体的字体类型 大小和颜色 并在状态栏中显示时间 为了方便用户的操作 还在程 序的窗体上放置了一个工具栏 本章介绍的记事本程序具有文件的新建 打开 保存功能 文字的复制 粘贴 删除 功能 字体类型 格式的设置功能 查看日期时间等功能 并且用户可以根据需要显示或 者隐藏工具栏和状态栏 接下来将详细的介绍记事本程序的设计与实现的步骤和方法 17 2 记事本界面设计记事本界面设计 新建一个 Windows 应用程序 并命名为 Notepad 本节介绍记事本程序的界面设计 以及界面上各控件的属性设置 17 2 1 界面设计界面设计 新建好 Notepad 项目后 定位到记事本程序的窗体设计器窗口 然后依次在窗体上 放置以下控件 各 1 个 1 MenuStrip 菜单控件 2 ToolStrip 工具栏控件 3 RichTextBox 多格式文本框控件 4 StatusStrip 状态栏控件 5 OpenFileDialog 打开对话框 6 SaveFileDialog 保存对话框 7 FontDialog 字体对话框 8 Timer 计时器控件 最终的用户界面如图 17 2 所示 设置好属性后 其中 MenuStrip 控件 ToolStrip 控 件 StatusStrip 控件 OpenFileDialog 对话框 SaveFileDialog 对话框 FontDialog 对话框 和 Timer 控件显示在窗体设计器下方的组件板上 图 17 2 记事本用户界面 17 2 2 属性设置属性设置 本小节将介绍窗体 菜单控件 工具栏控件 多格式文本框控件和状态栏控件的属性 设置 下面首先来看一下窗体的属性设置 1 窗体的属性设置窗体的属性设置 首先在 解决方案资源管理器 中将默认的窗体 Form1 cs 重命名为 frmNotepad cs 然后再设置窗体的其他属性 如表 17 1 所示 表 17 1 窗体的属性设置 控件类型控件名称属性设置结果 NamefrmNotepad Text记事本 StartPositionCenterScreen FormForm1 Size600 450 2 MenuStrip 的属性设置的属性设置 将菜单控件 MenuStrip 的 Name 属性设为 mnusNotepad 按照第 6 章介绍的方法设 计好下拉菜单 它共有 文件 F 编辑 E 格式 O 查看 V 和 帮助 H 5 个下拉子菜单 各子菜单如图 17 3 所示 图 17 3 记事本的菜单 下面用表格的形式给出各子菜单及其菜单项的属性设置 文件 菜单用于完成新建 打开 保存文件等功能 文件 F 菜单的属性设置如表 17 2 所示 表 17 2 文件 F 菜单 Text 属性Name 属性ShortcutKeys 属性ShowShortcutKeys 属性 文件 布尔变量 s 用于判断文件件是否被保存 true 表示文件是已经被保存了 false 表示文件未被保存 默认值为 true bool s true 接下来介绍多格式文本框 rtxtNotepad 菜单 mnusNotepad 工具栏 tlsNotepad 计时器 tmrNotepad 对象的程序代码 17 3 1 多格式文本框代码多格式文本框代码 当多格式文本框中的文本发生改变后 应当设置布尔变量 s 的值为 false 表示文件 未保存 因此编写多格式文本框的 TextChanged 事件代码如下 多格式文本框的 TextChanged 事件代码 private void rtxtNotepad TextChanged object sender EventArgs e 文本被修改后 设置 s 为 false 表示文件未保存 s false 17 3 2 菜单代码菜单代码 在本章介绍的记事本程序中 几乎所有的功能都是通过菜单来实现的 本小节将介绍 各菜单项的单击事件代码 1 文件 文件 F 菜单菜单 文件 F 菜单的功能是完成文件的新建 打开 保存 另存为功能 以及退出记 事本程序 下面对各个菜单项的源代码进行详细的说明 1 新建 N 菜单项 单击该菜单项时新建一个空白文档 首先应该判断文件是从磁盘打开的还是新建的 若从磁盘打开则将前面定义的变量 b 设为 true 否则设为 false 这样做可以根据 这个变量对文件进行相应的操作 并且每次保存文件后 都要将前面定义的变量 s 设为 true 表示文件已经被保存 单击新建菜单时 如果当前文件是从磁盘打开的 并且已经过修改 则要按 OpenFileDialog 控件的路径来保存文件 如果是新建的文件且内容不为空 则需要用 SaveFileDialog 控件来保存文件 新建 N 菜单项的代码如下 新建 菜单代码 private void tsmiNew Click object sender EventArgs e 判断当前文件是否从磁盘打开 或者新建时文档不为空 并且文件未被保存 if b true rtxtNotepad Text Trim 若文件未保存 if s false string result result MessageBox Show 文件尚未保存 是否保存 保存文件 MessageBoxButtons YesNoCancel ToString switch result case Yes 若文件是从磁盘打开的 if b true 按文件打开的路径保存文件 rtxtNotepad SaveFile odlgNotepad FileName 若文件不是从磁盘打开的 else if sdlgNotepad ShowDialog DialogResult OK rtxtNotepad SaveFile sdlgNotepad FileName s true rtxtNotepad Text break case No b false rtxtNotepad Text break 2 打开 O 菜单项 单击该菜单项时 如果是要从磁盘或其他设备打开 rtf 文件 同样要作出判断 所不同的是判断后用 OpenFileDialog 控件打开文件 并且每次保存文件后 都要将前面定 义的变量 s 设为 true 表示文件已经被保存 代码如下 打开 菜单代码 private void tsmiOpen Click object sender EventArgs e if b true rtxtNotepad Text Trim if s false string result result MessageBox Show 文件尚未保存 是否保存 保存文件 MessageBoxButtons YesNoCancel ToString switch result case Yes if b true rtxtNotepad SaveFile odlgNotepad FileName else if sdlgNotepad ShowDialog DialogResult OK rtxtNotepad SaveFile sdlgNotepad FileName s true break case No b false rtxtNotepad Text break odlgNotepad RestoreDirectory true if odlgNotepad ShowDialog DialogResult OK b true s true 3 保存 S 菜单项 单击此菜单项保存文本框的内容 需要判断该文件是从磁盘打开还是新建的 如果是 从磁盘打开的 则要判断是否有更改 只有有更改时才进行保存操作 否则不作任何处理 如果是新建的文档就调用 SaveFileDialog 控件保存文件 然后把 bool 变量 b 改为 true 同时把 SaveFileDialog 控件的文件路径赋给 OpenFileDialog 控件 这样下次打开文件时 文件路径默认为刚刚保存文件的路径 并且每次保存文件后 都要将前面定义的变量 s 设为 true 表示文件已经被保存 代码如下 保存 菜单代码 private void tsmiSave Click object sender EventArgs e 若文件从磁盘打开并且修改了其内容 if b true s true else if b false s true b true odlgNotepad FileName sdlgNotepad FileName 4 另存为 A 菜单项 将文件另存为后 要将前面定义的变量 s 设为 true 表示文件已经被保存 本菜 单项的代码如下 另存为 菜单代码 private void tsmiSaveAs Click object sender EventArgs e if sdlgNotepad ShowDialog DialogResult OK rtxtNotepad SaveFile sdlgNotepad FileName s true 5 退出 X 菜单项 本菜单项的功能是退出记事本程序 代码如下 退出 菜单代码 private void tsmiClose Click object sender EventArgs e Application Exit 2 编辑 编辑 E 菜单菜单 编辑 E 菜单用于完成撤销 撤销最近一次对文本框的编辑操作 复制 复制 选中的文本内容 剪切 剪切选中的文本内容 粘贴 粘贴剪贴板中的内容 全选 选 中多格式文本框中所有的内容 以及将当前日期追加至文本文件的功能 编辑 E 菜 单各菜单项的单击事件代码如下 编辑 菜单各菜单项的单击代码 撤销 菜单代码 private void tsmiUndo Click object sender EventArgs e rtxtNotepad Undo 复制 菜单代码 private void tsmiCopy Click object sender EventArgs e rtxtNotepad Copy 剪切 菜单代码 private void tsmiCut Click object sender EventArgs e rtxtNotepad Cut 粘贴 菜单代码 private void tsmiPaste Click object sender EventArgs e rtxtNotepad Paste 全选 菜单代码 private void tsmiSelectAll Click object sender EventArgs e rtxtNotepad SelectAll 日期 菜单代码 private void tsmiDate Click object sender EventArgs e rtxtNotepad AppendText System DateTime Now ToString 3 格式 格式 O 菜单菜单 格式 O 菜单用于设置打开或新建的文本内容是否自动换行 以及设置字体的格 式功能 1 自动换行 W 菜单项 此菜单项的 Checked 属性默认为 True 文本内容按照文本框的宽度自动换行 否则 只按段落标记换行 自动换行 W 菜单项的代码如下 自动换行 菜单代码 private void tsmiAuto Click object sender EventArgs e if tsmiAuto Checked false tsmiAuto Checked true 选中该菜单项 rtxtNotepad WordWrap true 设置为自动换行 else tsmiAuto Checked false rtxtNotepad WordWrap false 2 字体 F 菜单项 单击此菜单项时 弹出字体对话框以调整选择内容的字体 颜色等属性 因此需要使 用前面添加的 FontDialog 控件来实现 字体 F 菜单项的单击事件代码如下 字体 菜单代码 private void tsmiFont Click object sender EventArgs e fdlgNotepad ShowColor true if fdlgNotepad ShowDialog DialogResult OK rtxtNotepad SelectionColor fdlgNotepad Color rtxtNotepad SelectionFont fdlgNotepad Font 4 查看 查看 V 菜单菜单 查看 V 菜单用于设置记事本上是否显示工具栏和状态栏 这两个菜单项默认情 况下是被选中的 可以通过单击相应的菜单项设置不同的显示效果 1 工具栏 T 菜单项 该菜单项用于控制工具栏的显示和隐藏 默认状态下显示工具栏 当隐藏时应当修改 多格式文本框的位置和高度 代码如下 工具栏 菜单代码 private void tsmiToolStrip Click object sender EventArgs e Point point if tsmiToolStrip Checked true 隐藏工具栏时 把坐标设为 0 24 因为菜单的高度为 24 point new Point 0 24 tsmiToolStrip Checked false tlsNotepad Visible false 设置多格式文本框左上角位置 rtxtNotepad Location point 隐藏工具栏后 增加文本框高度 rtxtNotepad Height tlsNotepad Height else 显示工具栏时 多格式文本框左上角位置的位置为 0 49 因为工具栏的高度为 25 加上菜单的高度 24 后为 49 point new Point 0 49 tsmiToolStrip Checked true tlsNotepad Visible true rtxtNotepad Location point rtxtNotepad Height tlsNotepad Height 2 状态栏 S 菜单项 该菜单项用于控制状态栏的显示和隐藏 默认状态下显示状态栏 当隐藏时应当修改 多格式文本框的高度 代码如下 状态栏 菜单代码 private void tsmiStatusStrip Click object sender EventArgs e if tsmiStatusStrip Checked true tsmiStatusStrip Checked false stsNotepad Visible false rtxtNotepad Height stsNotepad Height else tsmiStatusStrip Checked true stsNotepad Visible true rtxtNotepad Height stsNotepad Height 5 帮助 帮助 H 菜单菜单 本菜单只有一个菜单项 关于记事本 A 该菜单项调用一个窗体 frmAbout 显 示本程序的一些相关信息 并用 LinkLabel 控件设置链接 通过它可以方便地给作者发送 E Mail frmAbout 窗体的设计将在下一小节 17 3 3 关于记事本 中详细的介绍 设计好 frmAbout 窗体后 为了显示该窗体 需要编写 关于记事本 A 菜单项的 单击事件代码如下 关于记事本 菜单代码 private void tsmiAbout Click object sender EventArgs e frmAbout ob FrmAbout new frmAbout ob FrmAbout Show 17 3 3 关于记事本关于记事本 接下来单击 Visual C 2008 的 项目 添加 Windows 窗体 菜单项 添加一个名 为 frmAbout 的窗体 如图 17 9 所示 图 17 9 添加 Windows 窗体 1 界面设计界面设计 然后给窗体 frmAbout 添加几个 Label Button LinkLabel 和 PictrueBox 控件 按 照表 17 8 给出的信息设置好属性后的程序界面如图 17 10 所示 图 17 10 关于 用户界面 关于记事本 窗体和窗体上各控件的属性设置如表 17 8 所示 表 17 8 窗体和各控件的属性 控件类型控件名称属性设置结果 NamefrmAbout Text关于记事本 FormForm2 StartPositionCenterScreen MaximizeBoxFalse AutoSizeModeGrowAndShrink PictureBoxPictureBox1Image选择记事本图标文件 NamebtnOkButtonButton1 Text确定 Label1Text记事本Label Label2Text版本号 1 0 0 0 NamellblEMail TextE Mail xlingyun LinkLabelLinkLabel1 LinkArea7 16 2 编写代码编写代码 本部分的代码很简单 单击 确定 按钮关闭本窗体 并且利用 LinkLabel 控件调用 Windows 的 OutLook 发送 E Mail 代码如下 关于记事本 代码 确定 按钮 private void btnOk Click object sender EventArgs e this Close 使用 LinkLabel 发送电子邮件 private void llblEmail LinkClicked object sender LinkLabelLinkClickedEventArgs e System Diagnostics Process Start mailto xlingyun 17 3 4 工具栏代码工具栏代码 工具栏提供了一些快捷按钮 用来方便用户的操作 用户按下按钮时相当于选择了某 个菜单项 用 switch 语句实现如下 双击工具栏的空白部位 编写工具栏的 ItemClicked 事件代码如下 工具栏的 ItemClicked 事件代码 private void tlsNotepad ItemClicked object sender ToolStripItemClickedEventArgs e int n 变量 n 用来接收按下按钮的索引号 n tlsNotepad Items IndexOf e ClickedItem switch n case 0 tsmiNew Click sender e break case 1 tsmiOpen Click sender e break case 2 tsmiSave Click sender e break case 4 tsmiCopy Click sender e break case 5 tsmiCut Click sender e break case 6 tsmiPaste Click sender e break case 7 tsmiUndo Click sender e break case 9 tsmiFont Click sender e break case 10 tsmiAbout Click sender e break 工具栏的 ItemClicked 事件代码 17 3 5 计时器代码计时器代码 要在状态栏的 tssLbl2 中显示当前时间 需要编写计时器控件的 Tick 事件 每秒钟触 发一次 代码如下 计时器控件的 Tick 事件代码 private void tmrNotepad Tick object sender EventArgs e tssLbl2 Text System DateTime Now ToString 17 3 6 窗体代码窗体代码 在改变窗体大小时 例如最大化窗口或使用鼠标改变窗口大小 为了使状态栏中的标 签也随之改变其宽度 应当编写窗体的 SizeChanged 事件代码如下 窗体的的 SizeChanged 事件代码 private void frmNotepad SizeChanged object sender EventArgs e frmNotepad ob frmNotepad new frmNotepad tssLbl1 Width this Width 2 12 tssLbl2 Width tssLbl1 Width 17 4 指定项目图标指定项目图标 在第 5 章介绍窗体 Form 的 Icon 属性时介绍过 通过 Icon 属性可以更改窗体左上角 即标题栏左边 的默认图标 首先设置两个窗体 frmNotepad 和 frmAbout 的 Icon 属性为指定的记事本图标 该图标可以在本书的源代码文件中找到 细心的读者还可以发现 创建并生成一个项目后 在项目文件夹的 bin 文件夹中 有一个名为 Debug 的文件夹 该文件夹中有一个与项目同名的可执行文件 如生成本 章介绍的记事本应用程序后 会生成一个名为 Notepad 的可执行文件 读者可以打开 Notepad 项目的 bin 文件夹中的 Debug 的文件夹查看 如作者的 Debug 文件 夹如图 17 11 所示 图 17 11 Debug 文件夹 使用 Notepad 可执行文件可以打开本章设计的记事本程序 而不需要在 Visual C 2008 的环境下运行 可以看到 Notepad 可执行文件的图标是系统默认的图标 有的时候 读者希望更 改成特别的或者有一定意义的个性化图标 下面以本章介绍的记事本程序为例介绍一种指 定项目图标的方法 使用该方法可以更改生成的可执行文件的图标 指定记事本程序项目图标的具体方法和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 印染助剂生产工岗前标准化考核试卷含答案
- 塑料层压工岗前工作规范考核试卷含答案
- 石英玻璃制品加工工QC管理知识考核试卷含答案
- 会展服务师岗前面试考核试卷含答案
- 再生物资回收挑选工安全知识模拟考核试卷含答案
- 鱼粉制作工风险评估竞赛考核试卷含答案
- 甲基氯硅烷生产工岗中应急技能考核试卷含答案
- 养鸡工诚信品质模拟考核试卷含答案
- 纯碱石灰工岗前执行能力考核试卷含答案
- 丙酮氰醇装置操作工测试验证强化考核试卷含答案
- 汽修店章程范本
- 登山健身步道建设投标方案
- 绿色内河货运对水生态的影响
- GA/T 2097-2023执法办案管理场所信息应用技术要求
- 探索心理学的奥秘 2024暑期学期 知到智慧树网课答案
- 电力行业标准《高压直流接地极技术导则》
- 2024届中国五环工程限公司校园招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- 梯田修建工程施工
- 浙江省通用安装工程预算定额第四册
- LS 8010-2014植物油库设计规范
- GB 11116-1989高密度聚乙烯树脂
评论
0/150
提交评论