C# 专用记事本(源码) 读写文本,设置字体和颜色,自动换行,切换文本文档
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或不足之处欢迎大家指正,希望能与各位交流学习。
动态创建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;//设置显示的字体颜色 }
输出结果:
如需本软件完整源码请留言!仅限学习交流使用!