【Form窗体】文件操作完成记事本功能
2013-03-23 20:59
274 查看
对于 文件操作常用的就是文件读写,文件打开,文件保存等本文将制作一个记事本,完成基本的文件操作。并对常用控件包括对话框和菜单以及状态栏综合运用。
下面谈下设计思想,然后再看具体实现。(部分功能代码参考网络资源)
在布局上样式和计算机自带记事本功能都是一致的,这里难点和关键点就是逻辑方面的判断。剪切复制等可用不可用逻辑问题。以及何时保存,还有就是打印等需要一些API(自带方法)。现在把整个界面布局粘贴如下:(下面红色为打印所需对话框)
View Code
运行结果:
1,打开文件
2,设置字体大小-》查看帮助-》保存成功(查看帮助是另外打开的)
4,状态栏变化
下面谈下设计思想,然后再看具体实现。(部分功能代码参考网络资源)
在布局上样式和计算机自带记事本功能都是一致的,这里难点和关键点就是逻辑方面的判断。剪切复制等可用不可用逻辑问题。以及何时保存,还有就是打印等需要一些API(自带方法)。现在把整个界面布局粘贴如下:(下面红色为打印所需对话框)
View Code
public partial class MainForm : Form { public MainForm() { InitializeComponent(); } //窗体加载 private void MainForm_Load(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized; this.time.Text = DateTime.Now.ToString(); } /// 保存文件 void SaveText() { try { saveFileDialog1.FileName = ""; saveFileDialog1.Filter = "文本文件(*.txt)|*.txt"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { string MyFileName = saveFileDialog1.FileName; StreamWriter sw = new StreamWriter(MyFileName, true, Encoding.Default); sw.WriteLine(rtxContent.Text); this.Text = MyFileName.Substring(MyFileName.LastIndexOf("\\") + 1); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { } } //另存为 private void HoldFile() { saveFileDialog1.Filter = "文本文件(*.txt)|*.txt"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { StreamWriter sw = new StreamWriter(saveFileDialog1.FileName, false); sw.WriteLine(rtxContent.Text); sw.Close(); MessageBox.Show("文件保存成功!", "温馨提示"); } // 判断是第一次保存还是第二次 if (saveFileDialog1.Equals("")) { FileInfo fileInfo = new FileInfo(saveFileDialog1.FileName); Text = fileInfo.Name + "-记事本"; saveFileDialog1.FileName = fileInfo.Name; } else { // 把标题改为打开的文件的名称 Text = saveFileDialog1.FileName + "-Mickey记事本"; } } //新建 private void FileMenuNew_Click(object sender, EventArgs e) { if (rtxContent.Text != "") { if (MessageBox.Show("是否保存当前文件?", "温馨提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information)== DialogResult.Yes) { // 保存文件 SaveText(); Text = "新建-Mickey记事本"; rtxContent.Text = ""; } else if (MessageBox.Show("是否保存当前文件?", "温馨提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information)== DialogResult.No) { // 用户选择不保存时将输入框中的内容清除 rtxContent.Text = ""; } } } //打开文件 private void FileMenuOpen_Click(object sender, EventArgs e) { try { if (rtxContent.Text != "") { SaveText(); //检查是否保存当前文件 } else { if (openFileDialog1.ShowDialog() == DialogResult.OK) { StreamReader sr = new StreamReader(openFileDialog1.FileName); rtxContent.Text = sr.ReadToEnd(); sr.Close(); FileInfo fileInfo = new FileInfo(openFileDialog1.FileName); // 把标题改为打开的文件的名称 Text = "*" + fileInfo.Name + "-白宁超记事本"; openFileDialog1.FileName = fileInfo.Name; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { } } //保存 private void FileMenuSave_Click(object sender, EventArgs e) { SaveText(); } //另存为 private void FileMenuLingcun_Click(object sender, EventArgs e) { HoldFile(); } //关闭 private void FileMenuClose_Click(object sender, EventArgs e) { DialogResult result = MessageBox.Show("是否将更改保存?", "温馨提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information); if (result == DialogResult.Yes) { SaveText(); Application.Exit(); } else if (result == DialogResult.No) { Application.Exit(); } } private string selectedInfo = "";//定义选中文本 private void 编辑EToolStripMenuItem_Click(object sender, EventArgs e) { if ((rtxContent.SelectedText.Equals("")) && (rtxContent.Equals(""))) { FileMenuCut.Enabled = false; FileMenuCopy.Enabled = false; FileMenuPaste.Enabled = false; FileMenuDelte.Enabled = false; } else { FileMenuCut.Enabled = true; FileMenuCopy.Enabled = true; FileMenuPaste.Enabled = true; FileMenuDelte.Enabled = true; } } //复制 private void FileMenuCopy_Click(object sender, EventArgs e) { rtxContent.Copy(); } //剪切 private void FileMenuCut_Click(object sender, EventArgs e) { selectedInfo = rtxContent.SelectedText; rtxContent.Cut(); rtxContent.SelectedText = ""; } //粘贴 private void FileMenuPaste_Click(object sender, EventArgs e) { rtxContent.Paste(); } //删除 private void FileMenuDelte_Click(object sender, EventArgs e) { rtxContent.Text = ""; } //撤销 private void FileMenuCancel_Click(object sender, EventArgs e) { rtxContent.Undo(); } //选择全部 private void FileMenuAll_Click(object sender, EventArgs e) { rtxContent.SelectAll(); } //显示时间 private void FileMenuTime_Click(object sender, EventArgs e) { rtxContent.AppendText(DateTime.Now.ToString()); } //设置字体 private void FileMenuFont_Click(object sender, EventArgs e) { if (fontDialog1.ShowDialog() == DialogResult.OK) { rtxContent.Font = fontDialog1.Font; } } //设置颜色 private void FileMenuColor_Click(object sender, EventArgs e) { if ( colorDialog1.ShowDialog() == DialogResult.OK) { rtxContent.ForeColor = colorDialog1.Color; } } //页面设置 private void FileMenuPage_Click(object sender, EventArgs e) { this.pageSetupDialog1.Document = this.printDocument1; pageSetupDialog1.ShowDialog(); } //打印 private void FileMenuDY_Click(object sender, EventArgs e) { if (rtxContent.Text.Length < 1) { MessageBox.Show("请确保要打印的文件的内容不为空!", "温馨提示"); return; } else { // 设置Document的属性 this.printDialog1.Document = this.printDocument1; this.printDialog1.PrinterSettings = this.pageSetupDialog1.PrinterSettings; if (this.printDialog1.ShowDialog() == DialogResult.OK) { try { this.printDocument1.Print(); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } //设置换行 private void FileMenuBr_Click_1(object sender, EventArgs e) { if (FileMenuBr.Checked) { rtxContent.WordWrap = true; } else { rtxContent.WordWrap = false; } } //状态栏是否选择 private void FileMenuState_Click(object sender, EventArgs e) { statusStrip1.Visible = FileMenuState.Checked; } //多窗体水平显示 private void FileMenuH_Click(object sender, EventArgs e) { LayoutMdi(MdiLayout.TileHorizontal); } //多窗体垂直显示 private void FileMenuV_Click(object sender, EventArgs e) { LayoutMdi(MdiLayout.TileVertical); } //多窗体层叠显示 private void FileMenuC_Click(object sender, EventArgs e) { LayoutMdi(MdiLayout.Cascade); } //帮助 private void FileMenuHelp_Click(object sender, EventArgs e) { Form2 f2=new Form2(); f2.Show(); } //根据文本变化而状态变化 private void rtxContent_TextChanged(object sender, EventArgs e) { this.total.Text = "当前计数" + this.rtxContent.Text.Length.ToString(); } }
运行结果:
1,打开文件
2,设置字体大小-》查看帮助-》保存成功(查看帮助是另外打开的)
4,状态栏变化
相关文章推荐
- 【Form窗体】文件操作完成记事本功能
- HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成增删改查功能
- HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成增删改查功能
- HDFS只支持文件append操作,不可变, 而依赖HDFS的HBase如何完成增删改查功能update
- 如何使用C#Windows窗体完成文件浏览功能:
- HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成增删改查功能
- 第四周上机--任务四--设计一个工资类(Salary)--完成各个功能--文件中读入数据--学会ASCII文件的操作
- C# Form窗体的功能操作,无边框窗体的移动,无边框窗体的尺寸缩放,保存和恢复窗体的尺寸和坐标信息
- 用Jaxp包中的DOM技术对XML文件进行解析并完成对文件的CRUD操作
- 【Java】打印流与缓冲区读者完成输入与输出到文件操作
- Java Web使用Html5 FormData实现多文件上传功能
- 完成文件复制操作,在程序运行后提示输入源文件路径,然后再输入目标文件路径。
- win7删除文件时,提示“操作无法完成,因为其中的文件夹或文件已在另一程序中打开”问题
- 拖放操作和文件复制小功能
- WebForm+Web.config: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。
- shell操作练习(编写shell脚本完成统计文件中的每个月份设备的出现次数)
- 0x800700E1: 无法成功完成操作,因为文件包含病毒 解决方法
- js 处理form表单整理成数组,结合php 完成排序功能的实现
- 完成一个学生管理程序,使用学号作为键添加5个学生对象,并可以将全部信息保存在文件中,可以实现对学生信息的学号查找,输出全部学生信息的功能。
- 删除某个文件(或者文件夹)的时候,提示,"操作无法完成,因为文件已在XX中打开,请关闭该文件并重试"