2013-12-02 4 views
-1

Я разрабатываю приложение для форм Windows, которое использует OpenFileDialog для выбора файлов и отбрасывает их на ListView.OpenFileDialog - выбор одного и того же файла дважды

Пользователю не удастся добавить один и тот же файл в listview дважды. Это не должно случиться:

This should NOT happen!!!!

Как это можно сделать ??

+1

Проверить файлы, существующие в списке, перед тем, как добавить еще один файл? – nvoigt

+0

Снова -1, я не понимаю причины этого! – codegasm

ответ

0

Попробуйте этот код.

if (openFileDialog1.ShowDialog() == DialogResult.OK) 
{ 
    var file = openFileDialog1.FileName; 
    if (listView1.FindItemWithText(file) == null) 
     listView1.Items.Add(file); 
} 

Вы также можете добавить else с коробкой сообщения, информирующей пользователем о выборе дубликатов файлов.

+0

Работал как шарм. Спасибо! – codegasm

3

Вы пытались проверить, содержит ли файл listview файл перед добавлением нового?

openfiledialog позволяет фильтровать по расширению, но не по имени файла, поэтому вам необходимо обработать пользовательский выбор после его закрытия. Возможно, показ диалогового окна с сообщением пользователю о том, что они выбрали дубликат, будет лучшим способом обработки недопустимого выбора.

+0

Это абсолютно правильно. Проблема заключалась в том, чтобы указать условие для одного и того же окна сообщений. – codegasm

+0

@HarshitSuri я чувствую себя ограбленным: P – Gusdor

+0

Bwahahaha. Может быть, в следующий раз сэр. :) – codegasm

0

Проверить существующие записи.

var txt = comboBox1.Text; 

if (!listView1.Items.ContainsKey(txt)) 
{ 
    lvi.Text = txt; 

    // this is the key that ContainsKey uses. you might want to use the value 
    // of the ComboBox or something else, depending the combobox is freetext 
    // or regarding your scenario. 
    lvi.Name = txt; 

    lvi.SubItems.Add(""); 
    lvi.SubItems.Add(""); 
    lvi.SubItems.Add(""); 
    lvi.SubItems.Add(""); 

    listView1.Items.Add(lvi); 
} 

How prevent duplicate items listView C#

+0

Не получится. 'Items' принадлежит' ListViewItemCollection' и 'Contains' принимает параметр типа ListViewItem. –

+0

Вот почему я сказал «вдоль этих строк», я бы дал весь код, если бы мой VS работал –

Смежные вопросы