【问题标题】:Check the type of file clicked in a listbox检查在列表框中单击的文件类型
【发布时间】:2013-09-07 05:28:21
【问题描述】:

如何检查列表框中对象的文件类型?

我正在从在线服务器返回一个字符串列表,并且只是希望在我单击末尾具有 .folder 文件类型的项目时触发一个事件。

我已经尝试过寻找但找不到任何东西。

有人可以提供链接或示例代码,以便我可以实现我想要实现的目标。

【问题讨论】:

  • 列表框中的所有项目是否都有扩展名(如 .folder)?
  • 是的。大多数图像文件类型虽然像 .jpg 和 .png 但它特别是我所追求的 .folder 类型。
  • 那么,你拉下这个字符串列表,显示给用户,他们点击一个扩展名为 .folder 的字符串,然后触发一个事件?
  • @Sean 请查看不同的答案并评论那些不能完全解决您需要的答案,或者更好地将其中一个标记为正确答案
  • @Mauricio 刚刚交配。不需要像那个人那样发表评论。我知道这个网站是如何运作的。

标签: c# string winforms listbox


【解决方案1】:

这应该适合你;

   private void listBox1.SelectedIndexChanged(object sender,EventArgs e)
    {
     string item=listBox1.SelectedItem.ToString();
     int index=item.LastIndexOf('.');
     if(index>=0)//It's a valid file
      {
       string extension=item.Substring(index+1,item.Length-index-1);
       if(extension=="folder")
       {
        MessageBox.Show("Yes it's a .folder");
       }
      }
     else if(index==-1)//Not a valid file
      {
        MessageBox.Show("The selected file is invalid.");
      }
    }

【讨论】:

  • 为什么需要使用 LastIndexOf 和 Substring 而没有使用 EndsWith ?
  • @MauricioGracia 如果项目是folder.folder,正如你所说,那么如果它适用于somefolder.foldermusic.folder,为什么它不起作用。我的意思是我没有在任何地方检查什么项目包含在last .之前,所以不会有问题。
  • Aviral 我不是说如果它的“folder.folder”会发生什么我是问它是否只是没有点“。”的“文件夹”
  • @MauricioGracia 感谢您的指点,如果发生这种情况,我忘记包含一些内容。我会更新它。
  • 考虑到问题的复杂性,逻辑过于复杂
【解决方案2】:
private void listBox1.SelectedIndexChanged(object sender,EventArgs e)
{
    string item ;

    item = listBox1.SelectedItem.ToString();

    if(item.EndsWith(".folder"))
    {
        //it's a .folder, raise the event or react as needed
    }
}

【讨论】:

    【解决方案3】:

    您可以包含 FileInfo 程序集并使用 FileInfo.Extension。

    FileInfo finfo = new FileInfo(fileName);
    string fileName = finfo.Extension
    

    【讨论】:

    • 你假设文件名是一个完整的文件路径,从来没有提到过
    • 您不需要完整的文件路径来使 .Extension 工作。当调用 .Extension 时,FileInfo("blahblah.fakeext") 将返回 ".fakeext"。虽然,公平地说,我相信它实际上只是调用 lastindexof('.') :)
    • 哦,根据这个stackoverflow.com/questions/12695502/…。扩展从字符串的末尾向后搜索到第一个句点。
    【解决方案4】:

    如果你只想要文件夹扩展事件

    private void listBox1.SelectedIndexChanged(object sender,EventArgs e)
    {
    string file=listBox1.SelectedItem.ToString();
    var ext = Path.GetExtension(file);
     if(ext ==".folder")
     {
        //raise event
     }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 2018-10-09
      • 1970-01-01
      相关资源
      最近更新 更多