Перетащите и падение для привязки данных практическое руководство
Добрый день,
У меня есть небольшая программа, содержащая DataGridView, на которую я хотел бы перетащить PDF-файлы.
У меня программа работает нормально за одним исключением
Если текущая строка является последней строкой, в которую вы вводите новые данные, то я получаю ошибку
Ошибка: операция недопустима из-за текущего состояния объекта.
Я понимаю, почему получаю эту ошибку. Я предполагаю, что вам нужно зафиксировать или отменить любые изменения, которые вы внесли в сетку, прежде чем добавлять что-либо новое. Я просто не знаю, как это сделать.
public partial class MainForm : Form { BindingList<PDFFile> PDFList = new BindingList<PDFFile>(); public MainForm() { InitializeComponent(); dgv.DataSource = PDFList; } void DgvDragDrop(object sender, DragEventArgs e) { PDFFile pdfFile; if (dgv.CurrentRow.IsNewRow) MessageBox.Show("Error will occur"); 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 DgvDragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy; } } public class PDFFile { public string Path {get; set;} }
Что я уже пробовал:
Я могу остановить это, развязав привязку перед добавлением в PDFList, а затем снова связав ее после завершения. Но это ужасный способ сделать это.
Я тоже пробовал
if (dgv.CurrentRow.IsNewRow || dgv.IsCurrentRowDirty) dgv.EndEdit();
Я уверен, что есть простое решение для этого, но я ничего не могу найти на форумах
Любая помощь будет очень признательна.