Последние открытые файлы в RichTextBox

283
11 июня 2017, 16:13

Подскажите как можно реализовать отображение последних открытых файлов в RichTextBox? Нужно чтобы эти файлы отображались в виде списка и можно было нажать на них и посмотреть. Пример на рисунке.

Answer 1

Во первых, нужно где то сохранять адреса открытых файлов. Для этого можно использовать User Settings. Можно все организовать примерно так:

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Windows.Forms;
namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Dictionary<string,string> docs;
        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView1.AutoGenerateColumns = false;
            docs = new Dictionary<string, string>();
            if (Properties.Settings.Default.DocsList != null)
                foreach (var rw in Properties.Settings.Default.DocsList)
                {
                    if (!docs.Select(r => r.Key).Contains(rw))
                        docs.Add(rw, Path.GetFileNameWithoutExtension(rw));
                }
            dataGridView1.DataSource = docs.ToList();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            using (var dlg = new OpenFileDialog())
            {
                if(dlg.ShowDialog()==DialogResult.OK)
                {
                    openDoc(dlg.FileName);
                }
            }
        }
        private void openDoc(string fileName)
        {
            if (Properties.Settings.Default.DocsList == null)
                Properties.Settings.Default.DocsList = new System.Collections.Specialized.StringCollection();
            Properties.Settings.Default.DocsList.Add(fileName);
            Properties.Settings.Default.Save();
            richTextBox1.LoadFile(fileName);
            if (!docs.Select(r => r.Key).Contains(fileName))
            {
                docs.Add(fileName, Path.GetFileNameWithoutExtension(fileName));
                dataGridView1.DataSource = null;
                dataGridView1.DataSource = docs.ToList();
            }
        }
        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            var f = dataGridView1[colKey.Name, dataGridView1.CurrentRow.Index].Value;
            if (f != null)
                openDoc(f.ToString());
        }
    }
}

Нужно еще организовать удаление из списка.

READ ALSO
Ошибка при подключение к Windows Server по SSH c#

Ошибка при подключение к Windows Server по SSH c#

Ошибка при подключение к Windows Server по SSH

316
Как изменить значение Resources.Strings?

Как изменить значение Resources.Strings?

Ошибка CS0200 Невозможно присвоить значение свойству или индексатору "StringsName" — доступ только для чтения

436
Сенсорный ScrollBar

Сенсорный ScrollBar

Для активации сенсорной прокрутки ScrollViewer достаточно установить PanningMode в BothОднако, это не даёт возможности использовать Thumb ScrollBar'а при сенсорном...

193
запись в файл или сохранить? [требует правки]

запись в файл или сохранить? [требует правки]

Запись текста в файл или сохранение его, это по сути одно и тоже ? Но какой метод будет работать быстрее, 1-й или 2-й ?

302