Как загрузить файлы в элемент управления RichTextBox, используя событие ItemActivate ListBox? - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь загрузить файлы из папки и перечислить их в элемент управления ListBox.После этого, как только пользователь выбирает (двойной щелчок) любой элемент списка (файл), он должен открываться в элементе управления RichTextBox.

Я попытался реализовать на своем конце, предоставленный ниже

public void DisplayFolder(string folderPath)
{
    listView1.Clear();
    listView1.Columns.Add("File Name", 150);
    listView1.Columns.Add("Last Accessed", 110);
    listView1.Columns.Add("Size", 80);
    listView1.Activation = ItemActivation.TwoClick;

    listView1.View = View.Details;
    string[] files = System.IO.Directory.GetFiles(folderPath);

    foreach (string file in files)
    {
        string fileName = Path.GetFileNameWithoutExtension(file);
        ListViewItem item = new ListViewItem(new[] {fileName, File.GetLastAccessTime(file).ToString(), file.Length.ToString()});
        listView1.Items.Add(item);
    }
}

private void listView1_ItemActivate(object sender, EventArgs e)
{
    RichTextBox rct = (RichTextBox)((Control)sender).TopLevelControl.Controls[1];
    string filepath = listView1.SelectedItems.ToString();
    string fileName = listView1.FocusedItem.Text;
    rct.LoadFile(filepath + "\\" + fileName);
}

Файл, выбранный в элементе управления ListBox, должен быть загружен в элемент управления RichTextBox.

Исключение составляет:

Ошибка исключения файла не найдена в файле rct.LoadFile (filepath + "\ "+ fileName);строка кода.

1 Ответ

0 голосов
/ 25 июня 2019

Линия string filepath = listView1.SelectedItems.ToString(); не будет работать так, как вы ожидаете. listView1.SelectedItems - это коллекция, а не отдельный элемент, который указывает на путь к файлу. Кроме того, вы нигде не сохраняете путь к файлу в просмотре списка.

Я предлагаю вам добавить путь к файлу согласно:

ListViewItem item = new ListViewItem(new[] {fileName, File.GetLastAccessTime(file).ToString(), file.Length.ToString(), folderPath});

Это добавит folderPath к последнему элементу в ListView, где вы сможете ссылаться на него позже.

Кроме того, изменив обработчик _ItemActivate на следующий, вы получите filePath из ListView:

string filepath = listView1.FocusedItem.SubItems[3].Text;

Наконец, при загрузке файла вы должны использовать Path.Combine вместо объединения строк, например:

rct.LoadFile(Path.Combine(filepath, fileName));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...