Nội dung
Giới thiệu
Bài này, chúng ta sẽ cùng nhau tạo ra Editor sử dụng RichTextBox trong WPF, sau khi chạy ứng dụng sẽ cho ra kết quả như sau:
Mã XAML
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF" Height="300" Width="300"> <DockPanel> <StackPanel DockPanel.Dock="Top" Orientation="Horizontal"> <Button Content="_New" Name="btnNew" Click="btnNew_Click" /> <Button Content="_Open" Name="btnOpen" Click="btnOpen_Click" /> <Button Content="_Save" Name="btnSave" Click="btnSave_Click" /> </StackPanel> <RichTextBox DockPanel.Dock="Bottom" Name="rtbTextBox1" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible"> <FlowDocument> <Paragraph>this is a test</Paragraph> <Paragraph>this is a test</Paragraph> </FlowDocument> </RichTextBox> </DockPanel> </Window>
Mã C#
//File:Window.xaml.cs using Microsoft.Win32; using System; using System.IO; using System.Windows; using System.Windows.Documents; using System.Windows.Markup; namespace WpfApplication1 { public partial class Window1 : Window { private String currentFileName = String.Empty; public Window1() { InitializeComponent(); } private void btnOpen_Click(object sender, RoutedEventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.FileName = currentFileName; dialog.Filter = "XAML Files (*.xaml)|*.xaml"; if (dialog.ShowDialog() == true) { currentFileName = dialog.FileName; { using (FileStream stream = File.Open(currentFileName, FileMode.Open)) { FlowDocument doc = XamlReader.Load(stream) as FlowDocument; if (doc == null) { MessageBox.Show("Could not load document.", Title); } else { rtbTextBox1.Document = doc; } } } } } private void btnNew_Click(object sender, RoutedEventArgs e) { rtbTextBox1.Document = new FlowDocument(); currentFileName = String.Empty; } private void btnSave_Click(object sender, RoutedEventArgs e) { SaveFileDialog dialog = new SaveFileDialog(); dialog.FileName = currentFileName; dialog.Filter = "XAML Files (*.xaml)|*.xaml"; if (dialog.ShowDialog() == true) { currentFileName = dialog.FileName; using (FileStream stream = File.Open(currentFileName, FileMode.Create)) { XamlWriter.Save(rtbTextBox1.Document, stream); } } } } }
Chúc các bạn thành công !