Mavzu: Hujjatlar. Reja


RichTextBox va hujjatlarni tahrirlash



Yüklə 0,58 Mb.
səhifə4/6
tarix14.04.2023
ölçüsü0,58 Mb.
#98008
1   2   3   4   5   6
121

RichTextBox va hujjatlarni tahrirlash.

Agar FlowDocumentPageViewer, FlowDocumentScrollViewer va FlowDocumentReader elementlari oqim hujjatini WPF da ko'rsatish uchun mo'ljallangan bo'lsa, uni tahrirlash uchun RichTextBox elementi ishlatiladi .
RichTextBox-ga faylni yuklash uchun XamlReader.Loadxaml tarkibini yuklaydigan usuldan foydalanishimiz mumkin. Biroq, rtf fayllari yoki oddiy matn kabi boshqa kontentni yuklash uchun biz rtf hujjatini FlowDocument obyektiga aylantiradigan TextRange sinfidan foydalanishimiz kerak .
RichTextBox bilan ishlash uchun quyidagi belgilashni aniqlaymiz:

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:DocumentsApp"
mc:Ignorable="d"
Title="MainWindow" Height="250" Width="400">











Va kod faylida tugmani bosish ishlov beruvchilarini o'rnating:

using Microsoft.Win32;
using System.IO;
using System.Windows;
using System.Windows.Documents;


namespace DocumentsApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}


private void Save_Click(object sender, RoutedEventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Text Files (*.txt)|*.txt|RichText Files (*.rtf)|*.rtf|XAML Files (*.xaml)|*.xaml|All files (*.*)|*.*";
if (sfd.ShowDialog() == true)
{
TextRange doc = new TextRange(docBox.Document.ContentStart, docBox.Document.ContentEnd);
using (FileStream fs = File.Create(sfd.FileName))
{
if (Path.GetExtension(sfd.FileName).ToLower() == ".rtf")
doc.Save(fs, DataFormats.Rtf);
else if (Path.GetExtension(sfd.FileName).ToLower() == ".txt")
doc.Save(fs, DataFormats.Text);
else
doc.Save(fs, DataFormats.Xaml);
}
}
}


private void Load_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "RichText Files (*.rtf)|*.rtf|All files (*.*)|*.*";


if (ofd.ShowDialog() == true)
{
TextRange doc = new TextRange(docBox.Document.ContentStart, docBox.Document.ContentEnd);
using (FileStream fs = new FileStream(ofd.FileName, FileMode.Open))
{
if (Path.GetExtension(ofd.FileName).ToLower() == ".rtf")
doc.Load(fs, DataFormats.Rtf);
else if (Path.GetExtension(ofd.FileName).ToLower() == ".txt")
doc.Load(fs, DataFormats.Text);
else
doc.Load(fs, DataFormats.Xaml);
}
}
}
}
}

Faylni ochish uchun biz TextRange sinfidan foydalanamiz . Ushbu klass konstruktori hujjatning o'zgartirilishi kerak bo'lgan qismini belgilaydigan hujjatning boshlang'ich va yakuniy nuqtalarini parametr sifatida oladi. Bunday holda, biz butun hujjatni o'zgartiramiz, shuning uchun biz hujjatning boshini boshlang'ich nuqtasi, hujjatning oxirini esa yakuniy nuqta sifatida belgilaymiz.
Keyinchalik, tanlangan fayl bilan bog'langan oqimni olamiz va uni Load - usuli yordamida RichTextBox-ga yuklaymiz Load(fs,DataFormats.Rtf). Bu erda biz hujjat turini FlowDocument ob'ektiga to'g'ri aylantirish imkonini beruvchi DataFormats ro'yxatining qiymatini belgilaymiz.
Hujjatni saqlashda biz konstruktorda hujjatning boshi va oxirini qabul qiladigan TextRange obyektini ham yaratamiz. Keyin esa hujjatni kerakli formatda saqlash uchun Save usulidan foydalanamiz.

3-rasm.
Ammo bu holda xaml hujjatlari bilan ishlashda siz TextRange hujjatni ildiz tugun bilan yuklashi va saqlashini hisobga olishingiz kerak Section. Va agar yuklanishi kerak bo'lgan faylning tarkibi tuzilmasi jihatidan farq qiladigan bo'lsa, yana xaml fayllarini yuklash uchun boshqa usuldan foydalanishimiz mumkin:

FlowDocument document = System.Windows.Markup.XamlReader.Load(fs) as FlowDocument;
if (document != null)
docBox.Document = document;


  1. Yüklə 0,58 Mb.

    Dostları ilə paylaş:
1   2   3   4   5   6




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin