文章目录
- 需求分析
- 读取文本文件
- 保存文本文件
需求分析
尽管现在比较主流的阅读格式已经是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
是包裹txt
的GroupBox
,上面代码的功能是,打开文本文件后,将文本文件的名字设置为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);
}