当前位置:首页 > C#学习 > C#软件 > 正文内容

C# 专用记事本(源码) 读写文本,设置字体和颜色,自动换行,切换文本文档

小道5年前 (2018-12-22)C#软件10975

C# 小道博客专用记事本主要使用控件:

menuStrip菜单控件

tabControl控件

TextBox控件

主要功能:

读取文本文档数据到文本框,文本框数据写入到文本文档,切换当前打开的文本文档。设置自动换行,设置文本字体和颜色,一键关闭文档等。

快捷键:

一、文件(Alt+F)

1、新建文本文档(Ctrl+N)

2、打开文本文档(Ctrl+O)

3、保存文本文档(Ctrl+S)

4、另存为文本文档(Ctrl+A)

5、打开记录(Ctrl+R)

6、退出(Alt+F4)

二、格式(Alt+O)

1、自动换行(Alt+W)

2、字体(Ctrl+F)

3、颜色(Alt+C)

三、关闭(Alt+E)

1、关闭当前文档(C)

2、关闭非当前文档(E)

3、关闭左边所有(L)

4、关闭右边所有(R)

5、全部关闭(L)

四、帮助(Alt+H)

1、小道博客(D)

2、关于专用记事本(F1)

当前版本:1.0 制作时间:大约15小时(新手走的弯路比较多!)。

本软件源码可到博客免费下载。

如发现Bug或不足之处欢迎大家指正,希望能与各位交流学习。


image.pngimage.pngimage.pngimage.png


动态创建TabPage 和 文本框 方法 代码:

        private void NewTxt()//动态创建TabPage 和 文本框 方法
        {
            TabPage tp = new TabPage();//实例化 选项卡
            tp.Name = "tp" + StaticData._tabPageNum;//设置 选项卡 名称
            tp.Padding = new Padding(3);//获取或设置控件内的空白。
            tp.Size = new Size(612, 388);//设置控件高度和宽度
            tp.Text = "New " + StaticData._tabPageNum + ".txt";//选项卡 标题
            tp.UseVisualStyleBackColor = true;//获取或设置一个值,该值指示当启用视觉样式时,TabPage 背景是否使用当前视觉样式呈现。
            StaticData._tpList.Add(tp);//添加

            TextBox txt = new TextBox();//实例化 文本框

            txt.Anchor = ((AnchorStyles)((((AnchorStyles.Top | AnchorStyles.Bottom)
            | AnchorStyles.Left)
            | AnchorStyles.Right)));//获取或设置控件绑定到的容器的边缘并确定控件如何随其父级一起调整大小。
            txt.BorderStyle = BorderStyle.None;//获取或设置文本框控件的边框类型。
            txt.Location = new Point(6, 6);//获取或设置该控件的左上角相对于其容器的左上角的坐标。
            txt.Multiline = true;//获取或设置一个值,该值指示此控件是否为多行 TextBox 控件。
            txt.Name = "txt" + StaticData._tabPageNum;//获取或设置控件的名称。
            txt.ScrollBars = ScrollBars.Both;//获取或设置哪些滚动条应出现在多行 TextBox 控件中。
            txt.Size = new Size(600, 376);//设置控件高度和宽度
            txt.Font = new Font("微软雅黑", 12F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(134)));
            txt.MaxLength = 99999999;//设置 可以输入的字数
            txt.WordWrap = 自动换行ToolStripMenuItem.Checked;//自动换行

            tp.Controls.Add(txt);//将 文本框 控件 添加到 TabPage 控件上
            tabControl1.TabPages.Add(tp);//将 TabPage 控件 添加到 tabControl1 控件上
            tabControl1.SelectedIndex = StaticData._openPath.Count - 1;//获取或设置当前选定的选项卡页的索引。

            StaticData._txtList.Add(txt);//添加
            StaticData._tabPageNum++;//自增1
        }

打开文件方法代码:

        private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
        {

            using (OpenFileDialog ofd = new OpenFileDialog())//打开对话框
            {
                ofd.Title = "请选择要打开的文本文档";//标题
                ofd.RestoreDirectory = true;//获取或设置一个值,该值指示对话框在关闭前是否还原当前目录。
                ofd.Filter = "文本文档(*.txt)|*.txt|所有文件(*.*)|*.*";//文件类型
                ofd.DefaultExt = "txt";//默认选中的类型
                if (ofd.ShowDialog() != DialogResult.OK)//判断是否点击了OK
                {
                    MessageBox.Show("请选择要打开的文件.", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);//提示
                    return;
                }

                if (StaticData._openPath.Contains(ofd.FileName))//判断打开的路径是否在 路径列表中
                {

                    StaticData._openNum = StaticData._openPath.IndexOf(ofd.FileName);//将路径所在的索引赋值给 _openNum
                    tabControl1.SelectedIndex = StaticData._openNum;//设置选项卡选中的索引
                }
                else
                {
                    StaticData._openPath.Add(ofd.FileName);//添加路径
                    StaticData._openNum = StaticData._openPath.Count - 1;//将新添加的路径索引值赋值给 _openNum
                    NewTxt();//调用方法
                }

                using (FileStream fs = new FileStream(StaticData._openPath[StaticData._openNum], FileMode.OpenOrCreate, FileAccess.Read))//读取
                {
                    while (true)
                    {
                        byte[] br = new byte[1024 * 1024 * 3];//字节数组
                        int r = fs.Read(br, 0, br.Length);//读取字节数组 返回字节数
                        if (r == 0)//判断是否为0  
                        {
                            break;//为0 则退出循环
                        }
                        string str = Encoding.UTF8.GetString(br, 0, r);//将字节数组转换为 字符串
                        StaticData._tpList[StaticData._openNum].Text = ofd.SafeFileName;//将文件名 赋值给 TabPage 控件标题
                        StaticData._txtList[StaticData._openNum].Text = str;//赋值给 文本框
                    }
                }
            }
        }

保存方法代码:

        void Save(string saveType, string savePath)//保存和另存为方法
        {
            if (saveType == "另存为")//判断传过来的是什么值
            {
                using (SaveFileDialog sfd = new SaveFileDialog())//保存
                {
                    sfd.Title = "另存为";
                    sfd.Filter = "文本文档(*.txt)|*.txt|所有文件(*.*)|*.*";
                    sfd.DefaultExt = "txt";
                    sfd.AddExtension = true;
                    if (StaticData._openPath[tabControl1.SelectedIndex] == null)//判断选中的 选项卡 路径是否为null
                    {
                        sfd.FileName = StaticData._tpList[tabControl1.SelectedIndex].Text.ToString();//将 TabPage 控件标题 赋值为 保存文件名字
                    }
                    else
                    {
                        sfd.FileName = "New " + StaticData._tpList[tabControl1.SelectedIndex].Text.ToString();//将 New 加上 TabPage 控件标题 赋值为 保存文件名字
                    }

                    if (sfd.ShowDialog() != DialogResult.OK)//判断是否点击了ok
                    {
                        MessageBox.Show("未保存!", "未保存", MessageBoxButtons.OK, MessageBoxIcon.Information);//提示
                        return;
                    }
                    savePath = sfd.FileName;//赋值路径
                    StaticData._tpList[tabControl1.SelectedIndex].Text = sfd.FileName.Substring(sfd.FileName.LastIndexOf(@"\") + 1);//TabPage 控件标题 为保存文件的名字
                }

                using (FileStream fs = new FileStream(savePath, FileMode.OpenOrCreate, FileAccess.Write))//写入
                {
                    byte[] br = Encoding.UTF8.GetBytes(StaticData._txtList[tabControl1.SelectedIndex].Text);//将字符串 转换成 字节数组
                    fs.Write(br, 0, br.Length);//写入
                }
                StaticData._openPath[tabControl1.SelectedIndex] = savePath;//将 保存路径 添加到 路径列表中
                ComboBoxList();//调用最近打开记录方法
                MessageBox.Show(saveType + "成功!", saveType, MessageBoxButtons.OK, MessageBoxIcon.Information);//提示
            }
        }

最近打开记录方法:

        void ComboBoxList()//最近打开记录
        {
            if (toolStripComboBox1.Visible == false)//判断 打开记录 菜单是否选中
            {
                return;
            }

            toolStripComboBox1.Items.Clear();//清空列表
            for (int i = StaticData._openPath.Count - 1; i >= 0; i--)//循环路径列表
            {
                if (StaticData._openPath[i] != null)//判断路径是否为null
                {
                    toolStripComboBox1.Items.Add(StaticData._openPath[i]);//不为null 则添加到列表
                }
            }

            if (toolStripComboBox1.Items.Count > 0)//判断添加的下拉框列表数量是否大于0
            {
                if (StaticData._openPath[tabControl1.SelectedIndex] != null)//判断 选中的 选项卡 路径不为null
                {
                    toolStripComboBox1.SelectedItem = StaticData._openPath[tabControl1.SelectedIndex];//下拉框 则显示 选项卡文档的路径
                }
                else
                {
                    toolStripComboBox1.SelectedIndex = -1;//否则,不显示
                }
            }
        }

字体和颜色代码:

        private void 字体ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FontDialog fd = new FontDialog();//字体
            fd.ShowDialog();//打开
            StaticData._txtList[tabControl1.SelectedIndex].Font = fd.Font;//设置显示的字体
        }

        private void 颜色ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ColorDialog cd = new ColorDialog();//颜色
            cd.ShowDialog();//打开
            StaticData._txtList[tabControl1.SelectedIndex].ForeColor = cd.Color;//设置显示的字体颜色
        }

输出结果:

image.pngimage.pngimage.png

如需本软件完整源码请留言!仅限学习交流使用!


专用记事本来源:本站
已经过安全软件检测无毒,请您放心下载。

扫描二维码推送至手机访问。

版权声明:本文由小道发布,如需转载请注明出处。

本文链接:https://daobk.com/post/154.html

分享给朋友:

“C# 专用记事本(源码) 读写文本,设置字体和颜色,自动换行,切换文本文档” 的相关文章

C#:GUID生成器

C#:GUID生成器

C#:GUID生成器        private void button1_Click(object sender, EventArgs e)//按钮单击事件 &nb...

小道的世界1.0版(未完成)

小道的世界1.0版(未完成)

小道的世界1.0版(未完成)已基本实现  注册帐号,登录帐号,查看装备和角色基本属性。基本实现如下图:继续学习以后完善。。。小道的世界程序.rar   程序。小道的世界.rar   源码。...

动态数组(ArrayList)小程序

动态数组(ArrayList)小程序

实现:添加元素,删除元素,查找元素,反转数组,根据索引值插入元素,根据索引值删除元素,将文本文档中每行数据导入动态数组中,将动态数组中的每个元素导出到文本文档中。清空动态数组等。using System; using System.Collections; using&nbs...

List小程序

List小程序

使用泛型List来实现:添加元素,删除元素,查找元素,清空元素,查看元素,索引插入元素。using System; using System.Collections; using System.Collections.Generic; using Sys...

评论列表

访客
访客 IP:
4年前 (2020-05-15)

哈哈,刚好需要

访客11
访客11 IP:
4年前 (2020-03-26)

可以把源码分享给我一份吗,谢谢

访客
访客 IP:
5年前 (2019-07-18)

你好,能把源码分享一下给我吗?

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。