Перенести путь файла в dataGridView через жесты

211
08 января 2019, 06:50

На форме есть dataGridView. Так же есть файл где-нибудь в проводнике. Хочу сделать так. Если взять этот файл и перенести его на dataGridView, то например в этом dataGridView будет появляться путь к этому файлу (Например C:\1.txt) в качестве новой ячейки. Спасибо!

Answer 1

Установите свойство AllowDrop и обработайте события DragEnter и DragDrop:

public Form1()
{
    InitializeComponent();
    dataGridView1.AllowDrop = true;
    dataGridView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.DataGridView_DragDrop);
    dataGridView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.DataGridView_DragEnter);
}
private void DataGridView_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Copy;
}
private void DataGridView_DragDrop(object sender, DragEventArgs e)
{
    object val;
    string filepath = "";
    bool found = false;
    //получаем список форматов DragAndDrop
    IDataObject data = e.Data;
    string[] formats = data.GetFormats();            
    //найдем в форматах данные Проводника
    foreach (var fmt in formats)
    {
        //Проводник передает перетаскиваемый файл в виде форматов FileDrop и/или FileNameW,
        //данными для которых является строка или массив строк
        if (fmt == "FileDrop" || fmt == "FileNameW")
        {
            val = data.GetData(fmt);
            if (val == null) continue;
            if (val is string)
            {
                filepath = val as string;
                found = true;
                break;
            }
            else if (val is string[])
            {
                string[] array = val as string[];
                if (array.Length > 0)
                {
                    filepath = array[0];
                    found = true;
                    break;
                }
            }
        }
    }
    if (!found) return; //ничего не найдено
    //добавляем в DataGridView
    DataGridViewCell cell = new DataGridViewTextBoxCell();
    cell.Value = filepath;
    DataGridViewRow row = new DataGridViewRow();
    row.Cells.Add(cell);
    dataGridView1.Rows.Add(row);
}
READ ALSO
Вывод result_count и catalog_ordering в произвольном шаблоне для товаров woocommerce

Вывод result_count и catalog_ordering в произвольном шаблоне для товаров woocommerce

как вывести базовую сортировку и количество товаров на странице, используя свой шаблон?

1012
Разбить массив Mysql на строки php

Разбить массив Mysql на строки php

Я только изучаю php и mysql, хотел узнать, возможно ли разбить массив такого вида:

233
Laravel eloquent оптимизация

Laravel eloquent оптимизация

Недавно понадобилось извлечь из таблицы 1600 товаров + из отдельной таблицы артикулы + бренды из тоже отдельной таблицыКазалось бы сделал что...

235