当前位置: 首页 > news >正文

WPF开发txt阅读器:需求分析和文件读写

文章目录

    • 需求分析
    • 读取文本文件
    • 保存文本文件

需求分析

尽管现在比较主流的阅读格式已经是epub, modi之类的,但txt的使用范围要远比前两者广泛,所以做一个txt阅读器还是有必要的。

但是对于书籍阅读而言,纯文本不包含目录信息,这对于阅读来说是一种困扰。所以想做一个txt阅读器,首先要解决的痛点问题,就是目录生成。

根据这个简单的需求,可以将界面设置为下面这种结构

在这里插入图片描述

当然,暂时设置这几种色彩,只是为了做个标记,左侧浅绿色用于存放文件名,左下角浅蓝色用于放置txt目录;右侧浅粉色用于放置一些系统设置,比如字体、背景、自动阅读等。

中间用于显示当前的阅读内容。

最上方并没有使用传统的菜单,而是工具栏,👈👉两个手用于打开和关闭左侧工具栏和右侧工具栏。

导入用于打开文件夹,并导入文件夹中的txt文件;打开则用于打开单个的txt文件;保存用于存储修改后的txt文本。

布局代码如下

<DockPanel LastChildFill="True"><ToolBar DockPanel.Dock="Top"><Button Content="👈"/><Button Content="导入"/><Button Content="打开" Click="btnOpenTxt_Click"/><Button Content="保存" Click="btnSaveTxt_Click"/><Button Content="👉"/></ToolBar><UniformGrid DockPanel.Dock="Left" Width="200" Columns="1"><ScrollViewer Margin="2"></ScrollViewer><ScrollViewer Margin="2"></ScrollViewer></UniformGrid><StackPanel DockPanel.Dock="Right" Width="200"></StackPanel><GroupBox x:Name="gbTxt" Header="无文件"><TextBox x:Name="txt" TextWrapping="Wrap" VerticalScrollBarVisibility="Auto">    </TextBox></GroupBox>
</DockPanel>

读取文本文件

最基础的功能当然是打开/保存txt文件,这里主要涉及到两个知识点,即文件对话框和文本文件读写。

首先为打开按钮添加btnOpenTxt_Click事件,其内容为

private void btnOpenTxt_Click(object sender, RoutedEventArgs e)
{var ofd = new OpenFileDialog();ofd.Filter = "文本文件(*.txt)|*.txt";if (ofd.ShowDialog()!=true)return;gbTxt.Header = System.IO.Path.GetFileName(ofd.FileName);txt.Text = File.ReadAllText(ofd.FileName, Encoding.Unicode);
}

其中,txt文本框的名字;gbTxt是包裹txtGroupBox,上面代码的功能是,打开文本文件后,将文本文件的名字设置为GroupBox的标题,然后导入文本文件的内容到txt

效果如下

在这里插入图片描述

保存文本文件

保存功能与此类似,为保存按钮添加btnSaveTxt_Click事件,C#代码如下

private void btnSaveTxt_Click(object sender, RoutedEventArgs e)
{var sfd = new SaveFileDialog();sfd.Filter = "文本文件(*.txt)|*.txt";if(sfd.ShowDialog()!=true) return;File.WriteAllText(sfd.FileName, txt.Text, Encoding.UTF8);
}
http://www.lryc.cn/news/92059.html

相关文章:

  • C++服务器框架开发9——日志系统LogFormatter_4/各个类的关系梳理/std::function/std::get
  • arm平台上的MNN编译与运行
  • python 编译安装指定版本 for linux
  • 在Linux系统下基于Docker搭建Redis集群
  • 牛客网刷题Day5
  • Vue.js 中的动态组件是什么?如何使用动态组件?
  • 2023年京东618预售数据:传统滋补成预售黑马,预售额超27亿
  • 【Linux系统基础快速入门详解】Linux 常用文件过滤编辑命令原理详解和每个命令使用场景以及实例
  • 05WEB系统的通信原理图
  • 降低试错成本,低代码或成企业数字化转型突破口
  • 串口助手(串口发送接收数据, 定时, 清空, hex显示)
  • bp神经网络
  • strace交叉编译后对特定文件的写流程进行监控和过滤
  • 初识网络之TCP网络套接字
  • 自然语言处理从入门到应用——自然语言处理的基本问题:文本分类(Text Classification, Text Categorization)
  • 【论文】——Robust High-Resolution Video Matting with Temporal Guidance浅读
  • 第四章、用户体验五要素之范围层解析(本文作用是通俗讲解,让你更容易理解)
  • 计算机毕业论文内容参考|基于python的农业温室智能管理系统的设计与实现
  • Java 进阶 -- 流
  • 硬件 TCP/IP 协议栈
  • word恢复和粘贴按钮变灰色,不可用怎么办?
  • 【unity技巧】Physics2D Raycast、Overlapcircle、OverlapBox检测的用法
  • 一、kafka入门
  • 公司新来一00后,真让人崩溃...
  • (1Gb)S28HS01GTGZBHA030/ S28HS01GTGZBHV033/ S28HS01GTGZBHA033 FLASH - NOR闪存器件
  • 苹果服务端通知v2处理(AppStore Server Notifications V2)
  • matlab 道路点云路缘石边界提取
  • 二叉树详解:带你掌握二叉树
  • LNMP网站框架搭建(编译安装)
  • 详解Servlet API