Member 14760181 Ответов: 1

Перетащите текстовый файл в fastcoloredtextbox, winform C#


Привет там я хочу сделать, когда я перетаскиваю файл .txt в FastColoredTextBox file.txt txt будет находиться в FastColoredTextBox пожалуйста помогите

Что я уже пробовал:

Я пытался это сделать но вместо того чтобы дать мне текст внутри файла он дает мне путь к файлу я не хочу этого я хочу txt внутри файла вот код
private void fastColoredTextBox1_DragOver(object sender, DragEventArgs e)
{
   files = (string[])e.Data.GetData(DataFormats.FileDrop);
   if (Path.GetExtension(files[0]) == ".txt" && files.Count()==1)
   {
      e.Effect = DragDropEffects.All;
   }
}

private void fastColoredTextBox1_DragDrop(object sender, DragEventArgs e)
{
   string textFg = File.ReadAllText(files[0]);
   string text = File.ReadAllText(files[0]);
   fastColoredTextBox1.Text = text;
}

RamiroX

Вы устанавливаете свойство "AllowDrop" cdontrol в true ?
Пожалуйста, посетите https://stackoverflow.com/questions/9464001/drag-and-drop-file-into-textbox/21978057

ZurdoDev

fastColoredTextBox выглядит как элемент управления textbox. Таким образом, он, скорее всего, не поддерживает перетаскивание файлов напрямую и чтение содержимого, вам, скорее всего, придется написать код самостоятельно, который вы показали, так в чем же заключается ваш вопрос?

1 Ответов

Рейтинг:
2

Richard Deeming

Есть несколько случаев, которые вы еще не рассматривали, когда ваш код в данный момент будет аварийно завершаться. Начните с того, что исправьте их:

private void fastColoredTextBox1_DragOver(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.None;
    
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
        if (files.Length == 1 && string.Equals(Path.GetExtension(files[0]), ".txt", StringComparison.OrdinalIgnoreCase))
        {
            e.Effect = DragDropEffects.All;
        }
    }
}

private void fastColoredTextBox1_DragDrop(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
        if (files.Length == 1 && string.Equals(Path.GetExtension(files[0]), ".txt", StringComparison.OrdinalIgnoreCase))
        {
            fastColoredTextBox1.Text = File.ReadAllText(files[0]);
        }
    }
}
Если он все еще не работает, то вам нужно будет зарегистрировать ошибку в проекте GitHub:
GitHub - PavelTorgashov/FastColoredTextBox: быстрое цветное текстовое поле для подсветки синтаксиса. Компонент текстового редактора для .NET.[^]

Или разместите вопрос на форуме в нижней части статьи CodeProject:
Быстрое цветное текстовое поле для подсветки синтаксиса[^]


Maciej Los

5ed!