Как разрешить удаление только одного файла в элемент управления listbox c # - PullRequest
0 голосов
/ 03 мая 2018

В настоящее время я разрабатываю приложение Windows Form, которое сравнивает 2 файла PDF в C #, для этого пользователь поместит 2 файла в 2 отдельных списка, в моем случае одно «оригинальное», а другое «новое», для В целях проверки мне было интересно, смогу ли я ограничить количество удаляемых файлов до 1 в списке.

  public Compare()
        {
            InitializeComponent();

            AllowDrop = true;
            OriginalDrop_LstBox.DragDrop += new DragEventHandler(OriginalDrop_LstBox_DragDrop);
            OriginalDrop_LstBox.DragEnter += new DragEventHandler(OriginalDrop_LstBox_DragEnter);
            NewDrop_LstBox.DragDrop += new DragEventHandler(NewDrop_LstBox_DragDrop);
            NewDrop_LstBox.DragEnter += new DragEventHandler(NewDrop_LstBox_DragEnter);
        }



 private void OriginalDrop_LstBox_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                e.Effect = DragDropEffects.All;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }

        private void OriginalDrop_LstBox_DragDrop(object sender, DragEventArgs e)
        {
            string[] s = (string[])e.Data.GetData(DataFormats.FileDrop, false);

            for (int i = 0; i < s.Length; i++)
            {
                OriginalDrop_LstBox.Items.Add(s[i]);
            }
        }

1 Ответ

0 голосов
/ 03 мая 2018

Получите данные и отклоните их, если количество не соответствует ожидаемому:

private void OriginalDrop_LstBox_DragEnter(object sender, DragEventArgs e)

if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
    var files = (string[])e.Data.GetData(DataFormats.FileDrop);
    if (files.Length == 1 && OriginalDrop.Items.Count == 0)
    {
        e.Effect = DragDropEffects.All;
    }
    else
    {
        e.Effect = DragDropEffects.None;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...