Chia sẻ

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 !


Chia sẻ
Xem thêm  [WPF] Lập trình ứng dụng WPF nghĩa là gì ?

Trả lời

Email của bạn sẽ không được hiển thị công khai.