zoukankan      html  css  js  c++  java
  • 【Form窗体】文件操作完成记事本功能

          对于 文件操作常用的就是文件读写,文件打开,文件保存等本文将制作一个记事本,完成基本的文件操作。并对常用控件包括对话框和菜单以及状态栏综合运用。

    下面谈下设计思想,然后再看具体实现。(部分功能代码参考网络资源)

          在布局上样式和计算机自带记事本功能都是一致的,这里难点和关键点就是逻辑方面的判断。剪切复制等可用不可用逻辑问题。以及何时保存,还有就是打印等需要一些API(自带方法)。现在把整个界面布局粘贴如下:(下面红色为打印所需对话框)

    1,两个核心方法:保存和另存为

    View Code
           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记事本";
                }
            }

    2,打开文件,涉及文件读取(文件流读取)

    View Code
            //打开文件
            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 { }
            }


    3,字体颜色设置以及所用对话框

    View Code
            //设置字体
            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;
                }
            }

    4,页面设置和打印

    View Code
            //页面设置
            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);
                        }
                    }
                }
            }

    5,窗体视图显示:水平,竖直,层叠

    View Code
            //多窗体水平显示
            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);
            }        

    6,根据文本变化而状态变化

    View Code
           //根据文本变化而状态变化
            private void rtxContent_TextChanged(object sender, EventArgs e)
            {
                this.total.Text = "当前计数" + this.rtxContent.Text.Length.ToString();
            }

    以下是全部完整代码(经测试可以正常运行)

    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,状态栏变化

  • 相关阅读:
    python 全栈开发,Day13(迭代器,生成器)
    python 全栈开发,Day12(函数的有用信息,带参数的装饰器,多个装饰器装饰一个函数)
    python 全栈开发,Day11(函数名应用,闭包,装饰器初识,带参数以及带返回值的装饰器)
    关于1024:堆栈下溢的错误(1024. Stack Underflow Occurred)
    Quick 3.3 final 加载ccs的变化
    Quick 3.3 的代码资源加密
    quick code ide设置分辨率
    quick3.3rc1导入工程到ADT
    lua 基本语法
    as3 阻止后续侦听器
  • 原文地址:https://www.cnblogs.com/baiboy/p/2977705.html
Copyright © 2011-2022 走看看