duminică, 3 aprilie 2016

C#20 RichTextBox, ToolStrip

Controlul ToolStrip 

Acest control implementează o bară de instrumente formată din mai multe butoane, butoane drop-down, comboBox-uri, liste derulante, etichete. Caracteristic acestor bare de instrumente  este faptul că au afișată pe suprafața instrumentelor (butoanelor) lor o imagine sugestivă (care la origine este un fișier de tip JPG sau GIF oarecare), scalată automat de  sistem la dimensiunea butonului, și un text auxiliar care se afișează la staționarea timp de 1 - 2 secunde a mous-ului pe sprafața butonului. Aceste butoane dublează funcțiile meniului, de aceea codul pentru evenimentul Click este același ca cel al itemului corespunzător de meniu.


Controlul RichTextBox


Acest control preia toate caracteristicile lui TextBox, și în plus oferă posibilitatea de formatare a textului (italic, bold, underline, culoare, dimensiune, font, paragraf). Caracteristic butonului este faptul că prin andocare la fereastra părinte își maximizează suprafața de lucru. Conținutul său poate fi introdus din  tastatură sau copiat dintr-un fișier RTF.

Aplicația Editor de fișiere RTF


Deschidem o aplicatie nouă, pe care o numim RichTextBoxApp. Aducem pe forma Form1 un MenuStrip, un ToolStrip, și câte un dialog din cele studiate în lecția trecută (openFile, saveFile, font și color).

Expandăm meniul la fel ca în lecția precedentă (File -Nou -Open -Save -Exit și respectiv Format-Font  - Color).

În plus, putem adăuga un nou meniu, Edit, cu itemii Copy, Cut, Paste. Modul în care putem utiliza aceste funcții îl găsim în help-ul contextual  Microsoft Visual Studio. Îndată ce  scriem în editorul de cod numele obiectului richTextBox1 și punct, sistemul ne afișează list derulantă a metodelor disponibile.

Expandăm controlul ToolStrip și generăm atâtea butoane câte ne trebuie pentru implementarea itemilor din meniu, adică 5: nou, open, save, font și color).

Căutăm în calculator sau pe internet imagini sugestive pentru asociat cu bara de instrumente. Asocierea se face prin click dreapta pe buton, apoi Set  image...

Setăm textul auxiliar care se afișează la staționarea mous-ului pe instrumente, prin setarea corespunzătoare a proprietatii Text a fiecărui instrument, din  panoul Proprietăți.

Creăm metodele handler pentru evenimentul Click al fiecărui item de meniu, apoi copiem identic în instrumentul corespunzător. Operațiile de deschidere și închidere de fișier se fac cu ajutorul metodelor loadFile, respectiv SaveFile ale controlului richTextBox1, metode care primesc ca argument numele fișierului returnat de dialogul aferent, astfel:

               //deschide fisierul cu metoda LoadFile
       richTextBox1.LoadFile(openFileDialog1.FileName);



              //salvare fisier cu extensia .rtf
         richTextBox1.SaveFile(saveFileDialog1.FileName,  RichTextBoxStreamType.RichText);



                //portiunea selectata din text preia caracteristicile alese de utilizator
          richTextBox1.SelectionFont = fontDialog1.Font; 


                  //cod care actualizeaza culorile in document
           richTextBox1.SelectionColor = colorDialog1.Color;


Aplicația completă este următoarea:

 namespace RichTextBoxApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void nouToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //sterge textul controlului
            richTextBox1.Text = "";
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            //sterge textul controlului
            richTextBox1.Text = "";
        }

        private void deschideToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //titlul dialogului
            openFileDialog1.Title = "Deschide fisier";
            // seteaza tipurille de fisier
            openFileDialog1.Filter = "Fisiere text |*.txt| fisiere rtf|*.rtf";
            //in comboBox-ul File name nu vrem sa apara la deschiderea dialogului nici un nume
            openFileDialog1.FileName = "";
            //directorul care se deschide in mod implicit
            openFileDialog1.InitialDirectory = "MyDocuments";
            //atentionare daca numele nu exista
            openFileDialog1.CheckFileExists = true;
            //deschide dialogul OpennFileDialog
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //deschide fisierul cu metoda LoadFile
                richTextBox1.LoadFile(openFileDialog1.FileName);
            }
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            //titlul dialogului
            openFileDialog1.Title = "Deschide fisier";
            // seteaza tipurille de fisier
            openFileDialog1.Filter = "Fisiere text |*.txt| fisiere rtf|*.rtf";
            //in comboBox-ul File name nu vrem sa apara la deschiderea dialogului nici un nume
            openFileDialog1.FileName = "";
            //directorul care se deschide in mod implicit
            openFileDialog1.InitialDirectory = "MyDocuments";
            //atentionare daca numele nu exista
            openFileDialog1.CheckFileExists = true;
            //deschide dialogul OpennFileDialog
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //deschide fisierul cu metoda LoadFile
                richTextBox1.LoadFile(openFileDialog1.FileName);
            }
        }

        private void salvezaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //titlul dialogului
            saveFileDialog1.Title = "salveaza fisierul";
            //extensia implicita de salvare
            saveFileDialog1.DefaultExt = ".rtf";
            //atentionare de suprascriere
            saveFileDialog1.OverwritePrompt = true;
            //deschide dialogul de salvare fisier
            if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //salvare fisier cu extensia .rtf
                richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.RichText);
            }
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            //titlul dialogului
            saveFileDialog1.Title = "salveaza fisierul";
            //extensia implicita de salvare
            saveFileDialog1.DefaultExt = ".rtf";
            //atentionare de suprascriere
            saveFileDialog1.OverwritePrompt = true;
            //deschide dialogul de salvare fisier
            if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //salvare fisier cu extensia .rtf
                richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.RichText);
            }
        }

        private void iesireToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void fontToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // se deschide dialogul font
            if (fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { //portiunea selectata din text preia caracteristicile alese de utilizator
                richTextBox1.SelectionFont = fontDialog1.Font;
            }
        }

        private void toolStripButton4_Click(object sender, EventArgs e)
        {
            {
                // se deschide dialogul font
                if (fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                { //portiunea selectata din text preia caracteristicile alese de utilizator
                    richTextBox1.SelectionFont = fontDialog1.Font;
                }
            }
        }

        private void culoareToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //deschide dialogul ColorDialog
            if (colorDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                //cod care actualizeaza culorile in document
                richTextBox1.SelectionColor = colorDialog1.Color;
            }
        }

        private void toolStripButton5_Click(object sender, EventArgs e)
        {
            //deschide dialogul ColorDialog
            if (colorDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                //cod care actualizeaza culorile in document
                richTextBox1.SelectionColor = colorDialog1.Color;
            }
        }
    }
}

 

Niciun comentariu:

Trimiteți un comentariu