带颜色的富文本框并保存,将带颜色的富文本框加载到 wpf c# 中的 rtf 文件中
Richtextbox with color and save,load the richtextbox with color into a rtf file in wpf c#
如何使用wpf和c#制作一个支持颜色的richtextbox并将richtextbox内容保存在一个rtf文件中?我希望用户可以在 richtextbox 中 select 一个词并给它一个特殊的字体颜色。并且用户可以将具有特殊颜色的richtextbox 保存到.rtf 文件中并将其加载回具有特殊颜色的richtextbox。
这里有一些可以帮助您入门的东西:
- 写一个文件名,路径如“C:\test.rtf”
- 即使文件是新的,也请单击“打开”。
- 在“文档”下方添加一些文字
- Select一个词然后点击“..添加颜色..”按钮。
- 保存文件。
- 重新启动程序并打开文件。文本应出现在文档字段中。
XAML:
<Window x:Class="WpfApp11.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp11"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="File path: "/>
<TextBox x:Name="filePathBox" Width="300" Margin="5,0,0,0"/>
</StackPanel>
<Button x:Name="open" Click="open_Click" Content="Open" Width="300" Margin="0,5,0,0" HorizontalAlignment="Left"/>
<TextBlock Text="Document" Margin="0,5,0,0"/>
<RichTextBox x:Name="richTextBox" Margin="0,5,0,0"/>
<Button x:Name="addColor" Click="addColor_Click" Content="Select and press this button to add color to text" Width="300" Margin="0,5,0,0" HorizontalAlignment="Left"/>
<Button x:Name="save" Click="save_Click" Content="Save" Width="300" Margin="0,5,0,0" HorizontalAlignment="Left"/>
<TextBlock Text="Status"/>
<TextBlock x:Name="statusBox" Width="300" Margin="0,5,0,0" HorizontalAlignment="Left"/>
</StackPanel>
</Grid>
</Window>
后面的代码 (xaml.cs)
using System;
using System.IO;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Media;
namespace WpfApp11
{
public partial class MainWindow : Window
{
public MainWindow()
{
DataContext = this;
InitializeComponent();
}
private void addColor_Click(object sender, RoutedEventArgs e)
{
richTextBox.Selection.ApplyPropertyValue(ForegroundProperty, new SolidColorBrush(Colors.Red));
}
private void open_Click(object sender, RoutedEventArgs e)
{
try
{
TextRange range;
FileStream fStream;
string filename = filePathBox.Text;
if (File.Exists(filename))
{
range = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
using (fStream = new FileStream(filename, FileMode.OpenOrCreate))
{
range.Load(fStream, DataFormats.Rtf);
fStream.Close();
}
statusBox.Text = "File opened.";
}
else
{
statusBox.Text = "File new.";
}
}
catch (Exception excep)
{
statusBox.Text = excep.Message;
}
}
private void save_Click(object sender, RoutedEventArgs e)
{
try
{
TextRange range;
FileStream fStream;
range = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
string filename = filePathBox.Text;
using (fStream = new FileStream(filename, FileMode.Create))
{
range.Save(fStream, DataFormats.Rtf);
fStream.Close();
}
statusBox.Text = "File saved.";
}
catch (Exception excep)
{
statusBox.Text = excep.Message;
}
}
}
}
如何使用wpf和c#制作一个支持颜色的richtextbox并将richtextbox内容保存在一个rtf文件中?我希望用户可以在 richtextbox 中 select 一个词并给它一个特殊的字体颜色。并且用户可以将具有特殊颜色的richtextbox 保存到.rtf 文件中并将其加载回具有特殊颜色的richtextbox。
这里有一些可以帮助您入门的东西:
- 写一个文件名,路径如“C:\test.rtf”
- 即使文件是新的,也请单击“打开”。
- 在“文档”下方添加一些文字
- Select一个词然后点击“..添加颜色..”按钮。
- 保存文件。
- 重新启动程序并打开文件。文本应出现在文档字段中。
XAML:
<Window x:Class="WpfApp11.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp11"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="File path: "/>
<TextBox x:Name="filePathBox" Width="300" Margin="5,0,0,0"/>
</StackPanel>
<Button x:Name="open" Click="open_Click" Content="Open" Width="300" Margin="0,5,0,0" HorizontalAlignment="Left"/>
<TextBlock Text="Document" Margin="0,5,0,0"/>
<RichTextBox x:Name="richTextBox" Margin="0,5,0,0"/>
<Button x:Name="addColor" Click="addColor_Click" Content="Select and press this button to add color to text" Width="300" Margin="0,5,0,0" HorizontalAlignment="Left"/>
<Button x:Name="save" Click="save_Click" Content="Save" Width="300" Margin="0,5,0,0" HorizontalAlignment="Left"/>
<TextBlock Text="Status"/>
<TextBlock x:Name="statusBox" Width="300" Margin="0,5,0,0" HorizontalAlignment="Left"/>
</StackPanel>
</Grid>
</Window>
后面的代码 (xaml.cs)
using System;
using System.IO;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Media;
namespace WpfApp11
{
public partial class MainWindow : Window
{
public MainWindow()
{
DataContext = this;
InitializeComponent();
}
private void addColor_Click(object sender, RoutedEventArgs e)
{
richTextBox.Selection.ApplyPropertyValue(ForegroundProperty, new SolidColorBrush(Colors.Red));
}
private void open_Click(object sender, RoutedEventArgs e)
{
try
{
TextRange range;
FileStream fStream;
string filename = filePathBox.Text;
if (File.Exists(filename))
{
range = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
using (fStream = new FileStream(filename, FileMode.OpenOrCreate))
{
range.Load(fStream, DataFormats.Rtf);
fStream.Close();
}
statusBox.Text = "File opened.";
}
else
{
statusBox.Text = "File new.";
}
}
catch (Exception excep)
{
statusBox.Text = excep.Message;
}
}
private void save_Click(object sender, RoutedEventArgs e)
{
try
{
TextRange range;
FileStream fStream;
range = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
string filename = filePathBox.Text;
using (fStream = new FileStream(filename, FileMode.Create))
{
range.Save(fStream, DataFormats.Rtf);
fStream.Close();
}
statusBox.Text = "File saved.";
}
catch (Exception excep)
{
statusBox.Text = excep.Message;
}
}
}
}