Как перетащить в представление данных с привязкой к данным - PullRequest
0 голосов
/ 03 апреля 2019

Добрый день,

У меня есть небольшая программа, которая содержит DataGridView, и мне бы хотелось иметь возможность перетаскивать PDF-файлы на нее.

У меня есть программа, которая отлично работает содно исключение

Если текущая строка является последней строкой, в которой вы вводите новые данные, тогда я получаю ошибку

Ошибка: операция недопустима из-за текущего состоянияобъект.

Я понимаю, почему я получаю эту ошибку.Я предполагаю, что вам нужно зафиксировать или отменить любые изменения, которые вы внесли в таблицу, прежде чем добавлять что-либо новое.Я просто не знаю, как это сделать.

Я могу предотвратить это, отменив привязку перед добавлением в PDFList, а затем снова сделав привязку после завершения.Но это ужасный способ сделать это.

Я также пытался

if (dataGridView1.CurrentRow.IsNewRow || dataGridView1.IsCurrentRowDirty)
    dgv.EndEdit(); 

Но без разницы

public partial class Form1 : Form
{
    BindingList<PDFFile> PDFList = new BindingList<PDFFile>();
    public MainForm()
    {
        InitializeComponent();
        dataGridView1.DataSource = PDFList;
    }

    void DgvDragDrop(object sender, DragEventArgs e)
    {
        PDFFile pdfFile;

        string[] files = (string[]) e.Data.GetData(DataFormats.FileDrop);
        foreach (string file in files)
        {
            try
            {
                pdfFile = new PDFFile();
                pdfFile.Path = file;

                PDFList.Add(pdfFile);
            }
            catch (Exception error)
            {
                MessageBox.Show("Error: " + error.Message);
            }
        }
    }

    void dataGridView1DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
            e.Effect = DragDropEffects.Copy;
    }
}

public class PDFFile
{
    public string Path {get; set;}
}

Любая помощь будет принята с благодарностью, пожалуйста.

...