Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在组合框中仅列出一次文件类型_Vb.net_File - Fatal编程技术网

Vb.net 在组合框中仅列出一次文件类型

Vb.net 在组合框中仅列出一次文件类型,vb.net,file,Vb.net,File,此代码 试试看 对于System.IO.Directory.GetFiles(dir)中的字符串形式的每个文件 如果System.IO.Path.GetExtension(file.ToString=“.xsl”,则 ComboTheme.Items.Add(System.IO.Path.GetFileNameWithoutExtension(文件)) ComboTheme.Items.Add(System.IO.Path.GetExtension(文件)) 如果结束 下一个 特例 结束尝试

此代码

试试看
对于System.IO.Directory.GetFiles(dir)中的字符串形式的每个文件
如果System.IO.Path.GetExtension(file.ToString=“.xsl”,则
ComboTheme.Items.Add(System.IO.Path.GetFileNameWithoutExtension(文件))
ComboTheme.Items.Add(System.IO.Path.GetExtension(文件))
如果结束
下一个
特例
结束尝试
工作时,在文本框中注册

  • 蓝色(.xsl)
  • 白色(.xsl)
  • 文件(.txt)
我只希望组合框列表中显示xsl文件,如下所示:

  • 蓝色的
  • 白色的

不完全清楚你在问什么,但从标题“只列出一次”中可以看出,如果组合框中出现意外情况,我想你可能遇到了问题

这里有一个代码可以满足您的要求:

    Dim files as String() = System.IO.Directory.GetFiles(dir, "*.xsl")
    Try
        For Each file As String In files 
            ComboTheme.Items.Add(System.IO.Path.GetFileNameWithoutExtension(file))
        Next

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
它将使组合看起来像

  • 蓝色的
  • 白色的
如果希望组合看起来像:

  • 蓝色(.xsl)
  • 白色(.xsl)
在循环中生成代码:

Dim s as String
Dim f as String = System.IO.Path.GetFileNameWithoutExtension(file)
Dim e as String = System.IO.Path.GetExtension(file)
s = string.Format("{0} ({1})", f, e)
ComboTheme.Items.Add(s)
我建议您也导入System.IO,这样您就不必一直编写System.IO


您的代码调用Add两次,这将导致组合框中出现4个条目,即使只有2个xsl文件

好吧,您可以使用
System.IO.Directory.GetFiles(dir,“*.xsl”)
,但这不会对输出造成太大影响。当前代码不应将扩展名为“.txt”的文件添加到组合框中。你应该明白发生了什么。此外,您不应该接受这样的异常(特别是在调试时)。摆脱异常处理,逐步完成代码;如果你不能解决这个问题,那么回答这个问题并提供更多信息。尝试清理和重建你的解决方案。您可能正在运行旧版本的代码。还可以临时删除try-catch块,并用生成的任何异常更新您的问题。您可以创建一个具有3个属性的类:
[P1]
作为完整文件名,
[P2]
返回
GetFileNameWithoutExtension
[P3]
返回
GetExtension
。然后重写
ToString()
以返回
“[P2]([P3])”
。使用
列表(类)
填充组合框,设置
displaymber=“[P2]”
。选择项时,您的
TextBox.Text=[SelectedItem].ToString()
您不需要。ToString是GetExtension的结果,因为GetExtension返回的字符串alreadynot,这意味着只有xsl文件出现,没有为文件扩展提供括号。我想你可能需要更好地解释自己,因为我不是唯一一个决定这是你想要的