【问题标题】:OpenFileDialog - selecting same file twiceOpenFileDialog - 两次选择同一个文件
【发布时间】:2013-12-03 15:21:36
【问题描述】:

我正在开发一个 Windows 窗体应用程序,它使用 OpenFileDialog 选择文件并将其拖放到 ListView

用户不能将同一文件添加到listview 两次。这不应该发生:

如何做到这一点??

【问题讨论】:

  • 在添加另一个文件之前检查列表视图中存在的文件?
  • 再次-1,我无法理解这背后的原因!

标签: c# winforms listview openfiledialog


【解决方案1】:

您是否尝试在添加新文件之前检查listview 是否包含该文件?

openfiledialog 允许您按扩展名过滤,但不能按文件名过滤,因此您需要在关闭后处理用户选择。也许显示一个消息对话框来告诉用户他们选择了重复项是处理无效选择的最佳方式。

【讨论】:

  • 完全正确。问题是为同一个消息框指定条件。
  • 哇哈哈哈。也许下次先生。 :)
【解决方案2】:

试试这个代码。

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

您还可以添加else 并带有一个消息框,通知用户选择重复文件。

【讨论】:

  • 工作就像一个魅力..谢谢!!
【解决方案3】:

检查现有条目。

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#

【讨论】:

  • 行不通。 Items 属于 ListViewItemCollectionContains 采用 ListViewItem 类型参数。
  • 这就是为什么我说“沿着这些思路”,如果我的 VS 可以工作,我会给出整个代码
猜你喜欢
  • 2016-09-28
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 2014-05-04
  • 1970-01-01
  • 2011-01-15
  • 2013-09-21
  • 1970-01-01
相关资源
最近更新 更多