阅读跟上次没有差别,这次增加了书架功能,下方的导入书籍可以在书架导入新书籍,在书籍上点击鼠标右键可以打开书籍或者从书架中移除书籍(只是移除书架中的书籍,不会删除文本).

1. 本来想用数据库来存储导入书籍的信息,但是存储的数据比较少而且数据库安装太大,于是选择使用txt文本存储数据。下面是生成书架的代码。界面初始化时读取txt文本中已经添加的书籍。

 private void BookShelf(){//文件路径string filePath = @"../../TXT/bookshelf.txt";try{if (File.Exists(filePath)){string[] strContent = File.ReadAllLines(filePath, Encoding.UTF8);for (int i = 0; i < strContent.Length; i++){ShowBook(strContent);}}else{MessageBox.Show("缺少系统文件");}}catch (Exception ex){MessageBox.Show(ex.Message);}}

2. 这里生成图书的封面,在选项卡中动态生成PictureBox和label标签组成书架上的图书

  private void ShowBook(string[] strContent){int ShowColumnNumber = 5;// (6 * pictureBox2.Width) / 784;//每一行显示的列数int controlWidth = 125;//每个控件占位宽度int controlHeight = 144;//每个控件占位高度// DisposeControls(pictureBox1);//清除Image myBitmap;myBitmap = Image.FromFile(Application.StartupPath + @"\Icon\001.jpg");int num = 0;//防止空行影响坐标for (int i = 0; i < strContent.Length; i++){if (strContent[i].Trim()!=""){string[] strArray = strContent[i].Split('|');int RowsCount = num / ShowColumnNumber;/********图片***********/PictureBox pic = new PictureBox{Size = new Size(76, 100),Name = strArray[1],Parent = tabPage2,Location = new Point(controlWidth * (num - ShowColumnNumber * RowsCount) + 35, RowsCount * controlHeight + 25)//设置坐标};//绑定右键菜单pic.ContextMenuStrip = contextMenuStrip1;//pic.Click += B_Click;pic.SizeMode = PictureBoxSizeMode.StretchImage;pic.Image = myBitmap;this.tabPage2.Controls.Add(pic);/*********标签**********/int LocationW = controlWidth * (num - ShowColumnNumber * RowsCount) + 35;//坐标X点int LocationH = RowsCount * controlHeight + 136;//坐标Y点Label lab = new Label{Size = new Size(120, 30),//设置大小Location = new Point(LocationW, LocationH),//设置坐标Text = strArray[0]};//初始化一个控件this.tabPage2.Controls.Add(lab);num++;//不为空的行才进行绘画}}}

3.添加右键菜单的功能代码,打开功能为将读取到的小说目录和内容放到主页在上一次的代码中有,删除操作操作TXT文本有点麻烦,由于File中没有直接修改文本的方法,只能先读取原来的所有文本,在使用list盛放时把需要删除的小说排除后,清空原来的txt再写入新的书籍信息。用一个全局变量来存放书籍的地址,在contextMenuStrip1_Opening事件中将选中PictureBox所代表图书的路径放进去。否则打开和删除的事件无法找到当前书籍的信息。

        string PicPath = "";//左键菜单private void 打开ToolStripMenuItem_Click(object sender, EventArgs e){                        string path = PicPath;//MessageBox.Show(path);if (File.Exists(path)){this.tabControl1.SelectedIndex = 0;ImportBooks(path);}else{MessageBox.Show("此书已经不在!");BookShelf();//this.tabControl1.SelectedIndex = 1;}}private void 删除ToolStripMenuItem_Click(object sender, EventArgs e){string filePath = @"../../TXT/bookshelf.txt";try{if (File.Exists(filePath)){//将bookshelf.txt所有行导出string[] strContentOld = File.ReadAllLines(filePath, Encoding.UTF8);//创建一个新的容器List<string> strContentNew = new List<string>();//遍历bookshelf.txt 将要删除的行排除后的所有行添加到新容器for (int i = 0; i < strContentOld.Length; i++){if (strContentOld[i].Trim() == ""){continue;}string[] strArray = strContentOld[i].Split('|');if (strArray[1] != PicPath){//strContentNew[i] = strContentOld[i];strContentNew.Add(strContentOld[i]);}}//清空bookshelf.txtFile.WriteAllText(filePath, string.Empty);//将排除要删除行的新数组写进bookshelf.txt中for (int i = 0; i < strContentNew.Count; i++){byte[] mybyte = Encoding.UTF8.GetBytes(strContentNew[i] + "\n");string mystr1 = Encoding.UTF8.GetString(mybyte);File.AppendAllText(filePath, mystr1);//添加至文件}}else{MessageBox.Show("缺少系统文件");}}catch (Exception ex){MessageBox.Show(ex.Message);}DisposeControls(tabPage2);BookShelf();}private void contextMenuStrip1_Opening(object sender, CancelEventArgs e){PicPath = (sender as ContextMenuStrip).SourceControl.Name;//MessageBox.Show(PicPath);}

TXT阅读器 C# winfrom 开发相关推荐

  1. WPF开发txt阅读器7:自定义文字和背景颜色

    文章目录 添加控件 具体实现 代码说明 txt阅读器系列: 需求分析和文件读写 目录提取类

  2. 评测三款最流行的txt阅读器(ios手机适用)

    IOS上有哪些好用的txt阅读器?小编找了三款网络上呼声最高的进行试用,分别是 ,发现各有特点.一起来看看吧. 1 neat reader Neat Reader是一款比较轻量级的阅读器,可以跨平台使 ...

  3. 评测三款最流行的txt阅读器(windows适用)

    不知道大家常用的txt阅读器是什么呢?对于经常看电子书的小伙伴来说,txt这种电子书格式一定是很熟悉的,而能姿势优美地解析txt的阅读器软件却不算多.在这里我给大家评测3种windows上可用的txt ...

  4. 评测3款高颜值的安卓txt阅读器

    txt阅读器作为一种特殊文件的解析软件,把文件解析得精美.吸引人观看,且配套的标注.笔记功能齐全,才能称之为比较合格的txt阅读器.以下是三款适配安卓系统的高颜值txt评测结果:  1.Neat Re ...

  5. 安卓手机上最好的3个txt阅读器

    txt格式是一款非常常见的电子书格式,很多手机由于自身不能直接打开txt格式文件或者软件使用感较差而给我们阅读带来困扰.今天小编就为大家介绍3款可以在安卓手机上使用的txt阅读器. 第一款:neat ...

  6. 评测三款高颜值的txt阅读器(ios手机适用)

    IOS上有哪些好用的.能解析txt格式的.颜值还高的阅读器?小编找了三款设计比较出色的进行试用,一起来看看吧. 1 neat reader 相信很多人都用过它,软件如其名,在前端设计上是费了心思的. ...

  7. 评测3款最流行的安卓txt阅读器

    这三款是txt书迷最常用的三款适配安卓手机的txt阅读器,可以说只要搜索安卓txt阅读器,大部分人都会向你推荐这三款.那么它到底孰优孰劣,哪个更适合你呢?我把特征简要总结了一下. 1.Neat Rea ...

  8. 最好的3个iOS苹果手机上的txt阅读器

    身边很多朋友都喜欢用手机阅读txt小说,今天小编将为大家推荐iOS苹果手机上最好的3个txt阅读器. Top1:neat reader 这款在小编用过的阅读器中绝对排第一位,软件界面颜值很高,对追求界 ...

  9. 评测三款最流行的txt阅读器

    哪款txt阅读器读小说最好用?我把网上呼声最高的三款下载试用了一下,以下是体验: 1.Neat Reader Neat Reader是一款比较轻量级的阅读器,可以跨平台使用的TXT阅读器,在手机端.P ...

最新文章

  1. 直播系统开发:功能创新提升用户留存
  2. kivy中kv语言的变态用法
  3. 交叉编译Open***-2.4.3
  4. 深度学习核心技术精讲100篇(五十九)-多业务融合推荐策略实战应用
  5. 流式计算新贵Kafka Stream设计详解--转
  6. NoSQL Databases - CouchDB
  7. 【Linux系统编程】进程间通信--有名管道
  8. 魅族魅蓝mirror简单打开usb调试模式的步骤
  9. hibernate+oracle+servlet实现插入数据的时候,不立马显示!!
  10. mysql错误日志为aborting_MySQL 错误日志(Error Log)
  11. 论MySQL的监控和调优
  12. [算法]bitmap算法
  13. 大模型系统和应用——自然语言处理大模型基础
  14. linux开远程连接,Linux/Ubuntu 怎么设置打开远程桌面登录连接
  15. 应用密码学第6章——第七章
  16. 2009年河北省普通高校专接本考试专业课考试用参考教材目录
  17. 如何去除 Win11 Dev 通道版本的右下角水印
  18. 公司来了一个low逼程序员,进程线程面试题总结
  19. 五万字 | Flink知识体系保姆级总结
  20. emmx用xmind打开_XMind 里流程图的正确打开方式

热门文章

  1. 独立站shopify卖家如何玩转TikTok?
  2. 智慧油田解决方案-最新全套文件
  3. 【CVPR 2021】剪枝篇(五):基于关键通路的神经网络可解释剪枝
  4. 基于5G通讯技艺的物联网财产成长
  5. vue element-ui select 多选验证不通过问题处理
  6. 自己动手将在线文档制作成CHM文件
  7. 利用ARIMA季节模型预测
  8. 信息发布系统在医院体检中心的运用
  9. 技术平台应用开发专题月 | 国产化替代的本质是价值替代
  10. 关于 time wait