zoukankan      html  css  js  c++  java
  • 记事本程序

    Anchor:控件与容器周围的距离保持不变

    Dock:定义容器要停靠到哪一边,重要的一个是Fill填充

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO;
    
    namespace 简单记事本
    {
        public partial class Form1 : Form
        {
            private bool IsSave = false;
            string fileName = null;
    
            public Form1()
            {
                InitializeComponent();
                this.Text = "无标题-猫的记事本";
                
            }
    
            private void 新建NToolStripMenuItem_Click(object sender, EventArgs e)
            {
                if (IsSave == true)
                {
                    DialogResult re = MessageBox.Show("是否将更改保存到 " + this.Text.Substring(0, this.Text.Length - 6) + "?", "询问", MessageBoxButtons.YesNoCancel);
                    if (re == DialogResult.Yes)
                    {
                        SaveFile();
                    }
                    else if(re == DialogResult.Cancel)
                    {
                        return;//什么也不做,直接返回
                    }
                   
                }
    
                txtText.Text = "";
                fileName = "";
                this.Text = "无标题-猫的记事本";
    
            }
    
            private void toolStripMenuItem1_Click(object sender, EventArgs e)
            {
                //打开文件      
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Title = "打开文件";
                ofd.Filter = "文本文件|*.txt|所有文件|*.*";
    
                //读取文件步骤: 
                //1. 声明文件流,即在内存申请一个空间,让文件和这个空间建立联系
                //2. 创建读写器,用来操作文件流对象
                //3. 读操作
                //4. 释放读取器
                //5. 释放文件流对象
    
    
                if(ofd.ShowDialog() == DialogResult.OK)
                {
                    //一打开指定文件,则立刻修改标题为文件名
                    fileName = ofd.FileName;
                    //                             只显示文件名,不显示文件路径
                    this.Text = fileName.Substring(fileName.IndexOf("\") + 1) + "-猫的记事本";
    
                    //1 声明文件流
                    //                             1文件路径,2,3打开-读取,4打开文件后,其他进程对此文件的操作
                    FileStream fs = new FileStream(ofd.FileName, FileMode.Open,FileAccess.Read,FileShare.Read);
    
                    //fs创建了与文件相连的通道,而sr可用来操纵fs,进行文件的读取
    
                    //2 创建读写器
                    //StreamReader形参类型是Stream类,故可以接受其子类FileStream
                    //StreamReader(fst)英文可以正常,汉字不能正常时,为编码问题,添加编码方式
                    StreamReader sr = new StreamReader(fs,Encoding.Default);
    
                    //3 读取
                    //sr.ReadLine();//读取一行
                    //sr.ReadToEnd();//读取到最后
                    //sr.EndOfStream;
                    while(sr.EndOfStream == false)
                    {
                        string line = sr.ReadLine() + "
    ";
                        txtText.Text += line;
                    }
    
                    //或者一次性读完 
                    //txtText.Text = sr.ReadToEnd();
    
                    //4 关闭
                    sr.Close();
                    fs.Close();
    
                    IsSave = false;
    
                }
            }
    
            private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)
            {
                SaveFile();
            }
    
            private void 退出EToolStripMenuItem_Click(object sender, EventArgs e)
            { 
                this.Close();
            }
    
            private void SaveFile()
            {
                //写入文件步骤: 
                //1. 声明文件流,即在内存申请一个空间,让文件和这个空间建立联系
                //2. 创建写入器,用来操作文件流对象
                //3. 写操作
                //4. 释放写入器
                //5. 释放文件流对象
    
                if(fileName == null || fileName == "")
                {
                    SaveFileDialog sfd = new SaveFileDialog();
                    sfd.Title = "保存文件";
                    sfd.Filter = "文本文件|*.txt|所有文件|*.*";
    
                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        fileName = sfd.FileName;
                        this.Text = fileName.Substring(fileName.IndexOf("\") + 1) + "-猫的记事本";
                    }
                    else
                    {
                        MessageBox.Show("文件打开失败!");
                        return;
                    }
                } 
    
                FileStream fs = new FileStream(fileName, FileMode.Create);
                StreamWriter sw = new StreamWriter(fs, Encoding.Default);
                sw.Write(txtText.Text);
    
                //sw写磁盘文件时,先写内存的fs,只有将 fs填满或者执行了sw关闭才将fs中内容写入磁盘
                sw.Close();
                fs.Close();
    
                IsSave = false;
            }
    
            private void txtText_TextChanged(object sender, EventArgs e)
            {
                
                IsSave = true;
            }
    
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                if (IsSave == true)
                {
                    DialogResult re = MessageBox.Show("是否将更改保存到 "+this.Text.Substring(0,this.Text.Length - 6)+"?", "询问", MessageBoxButtons.YesNoCancel);
                    if (re == DialogResult.Yes)
                    {
                        SaveFile();
                    }
                    else if (re == DialogResult.No)
                    {
    
                    }
                    else
                    {
                        e.Cancel = true;
                    }
    
                    IsSave = false;
                }
            }
    
            private void 复制ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                txtText.Copy();
            }
    
            private void 剪切ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                txtText.Cut();
            }
    
            private void 粘贴ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                txtText.Paste();
            }
    
            private void 查找ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                int currPos = txtText.SelectionStart;//选中的当前位置
    
                int findPos = txtText.Text.IndexOf("aa", currPos);
                if(findPos != -1)
                {
                    txtText.Select(findPos, 2);
                }
            }
    
            private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                FontDialog fd = new FontDialog();
                fd.Font = txtText.Font;
                if(fd.ShowDialog() == DialogResult.OK)
                {
                    txtText.Font = fd.Font;
                }
            }
    
            private void 字体颜色ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                ColorDialog cd = new ColorDialog();
                cd.Color = txtText.ForeColor;
    
                if(cd.ShowDialog() == DialogResult.OK)
                {
                    txtText.ForeColor = cd.Color;
                }
            }
    
            private void 背景颜色ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                ColorDialog cd = new ColorDialog();
                cd.Color = txtText.BackColor;
    
                if (cd.ShowDialog() == DialogResult.OK)
                {
                    txtText.BackColor  = cd.Color;
                }
            }
    
            private void Form1_FormClosed(object sender, FormClosedEventArgs e)
            {
                //关闭后创建配置文件,记录文档的位置信息
                int x = this.Location.X;
                int y = this.Location.Y;
                int w = this.Size.Width;
                int h = this.Size.Height;
    
                //此时自动创建文件流对象
                StreamWriter sw = new StreamWriter(Application.StartupPath + "\app.dll", false);
                sw.WriteLine(x.ToString());
                sw.WriteLine(y.ToString());
                sw.WriteLine(w.ToString());
                sw.WriteLine(h.ToString());
    
                sw.Close();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                //是否有配置文件,如果有则读取
                string appPath = Application.StartupPath + "\app.dll";
                if(File.Exists(appPath))
                {
                    StreamReader sr = new StreamReader(appPath);
                    int x = Convert.ToInt32(sr.ReadLine());
                    int y = Convert.ToInt32(sr.ReadLine());
                    int w = Convert.ToInt32(sr.ReadLine());
                    int h = Convert.ToInt32(sr.ReadLine());
    
                    this.Location = new Point(x, y);
                    this.Size = new Size(w, h);
                    sr.Close();
                }
            }
        }
    }
    

      

  • 相关阅读:
    2016 Multi-University Training Contest 3 部分题解
    STL漫谈
    ACM之路(18)—— 矩阵
    BestCoder Round #84
    HDU 2177 —— (威佐夫博弈)
    2016 Multi-University Training Contest 2 部分题解
    HDU 2176 取(m堆)石子游戏 —— (Nim博弈)
    心情--总结、反思与展望
    【Convert Sorted List to Binary Search Tree】cpp
    【Convert Sorted Array to Binary Search Tree】cpp
  • 原文地址:https://www.cnblogs.com/my-cat/p/7285516.html
Copyright © 2011-2022 走看看