none
combobox sort问题 RRS feed

  • 问题

  • Dim d As New System.IO.DirectoryInfo(f)

            For Each a As IO.DirectoryInfo In d.GetDirectories

                ComboBox1.Items.Add(a)

            Next

    Dim arr(Me.ComboBox1.Items.Count - 1) As Integer

     Dim gg As Integer

      For gg = 0 To Me.ComboBox1.Items.Count - 1

      arr(gg) = Me.ComboBox1.Items(gg)

      Next

     

            Array.Sort(arr)

       Me.ComboBox1.Items.Clear()

     

            For i = 0 To arr.Length - 1

    Me.ComboBox1.Items.Add(arr(i))

    Next

     

    出现Conversion from type 'DirectoryInfo' to type 'Integer' is not valid.该如何修改?


    2011年2月20日 12:40

答案

  • 你好

    有沒有嘗試過

    直接放倏 PATH 到 

     

      Private Sub volume()

            Dim d As New System.IO.DirectoryInfo("C:\Users\ck\Downloads\comic\hong kong comic\三国骄皇\")

            Dim arr(d.GetFiles.Count - 1) As Integer

            Dim dInfo() As IO.FileInfo = d.GetFiles

     

            For a As Integer = 0 To dInfo.Count - 1

                arr(a) = dInfo(a).Name.Substring(0, dInfo(a).Name.Length - dInfo(a).Extension.Length + 1)

            Next

     

            Array.Sort(arr)

            Me.ComboBox1.DataSource = arr

        End Sub

    有沒有結果?

    Please Correct me if my concept is wrong


    Chi
    • 已标记为答案 ckjason 2011年2月22日 5:19
    2011年2月21日 8:19
    版主

全部回复

  • 你好

    這是因為 你的 combobox Item 是 DirectoryInfo Type, 所以不能自動轉成INTEGER

    而我相信你只想找到 FOLDER 的名稱..

    所以我便用了 dInfo(a).Name 來實現這個功能

    我改變了一些Code

    應該可以解決這個問題的

            Dim d As New System.IO.DirectoryInfo("D:\DevelopmentFolder\Number\")

            Dim arr(d.GetDirectories.Count - 1) As Integer

            Dim dInfo() As DirectoryInfo = d.GetDirectories

            For a As Integer = 0 To dInfo.Count - 1

    If IsNumeric(dInfo(a).Name) then

                arr(a) = dInfo(a).Name

    end if

            Next

     

     

     

            Array.Sort(arr)

     

            'Me.ComboBox1.Items.Clear()

     

            'For i = 0 To arr.Length - 1

            '    Me.ComboBox1.Items.Add(arr(i))

            'Next

            Me.ComboBox1.DataSource = arr


    Please correct me if my concept is wrong

     


    Chi
    2011年2月20日 14:25
    版主
  • 你好

    這是因為 你的 combobox Item 是 DirectoryInfo Type, 所以不能自動轉成INTEGER

    而我相信你只想找到 FOLDER 的名稱..

    所以我便用了 dInfo(a).Name 來實現這個功能

    我改變了一些Code

    應該可以解決這個問題的

            Dim d As New System.IO.DirectoryInfo("D:\DevelopmentFolder\Number\")

            Dim arr(d.GetDirectories.Count - 1) As Integer

            Dim dInfo() As DirectoryInfo = d.GetDirectories

            For a As Integer = 0 To dInfo.Count - 1

    If IsNumeric(dInfo(a).Name) then

                arr(a) = dInfo(a).Name

    end if

            Next

     

     

     

            Array.Sort(arr)

     

            'Me.ComboBox1.Items.Clear()

     

            'For i = 0 To arr.Length - 1

            '    Me.ComboBox1.Items.Add(arr(i))

            'Next

            Me.ComboBox1.DataSource = arr


    Please correct me if my concept is wrong

     


    Chi

     Dim dInfo() As DirectoryInfo = d.GetDirectories ‘这句语句出现Type 'DirectoryInfo' is not defined错误.

    我把它改成   Dim dInfo() As IO.DirectoryInfo就没有问题。但combobox1没有任何folder名称。


    2011年2月20日 14:49
  • 你好

    可以用' Dim dInfo() As IO.DirectoryInfo 代 Dim dInfo() As DirectoryInfo

     

    你知道你的檔案只是有 數字的嗎? 如果不是的話或者你可以 COMMENT OUT  這一句 'If IsNumeric(dInfo(a).Name) then

        For a As Integer = 0 To dInfo.Count - 1

    'If IsNumeric(dInfo(a).Name) then

                arr(a) = dInfo(a).Name

    'end if

            Next

    但是如果你的資料夾有文字的話... 你的ARRAY 便會出錯..

    因為你DEFINE 的ARRAY 是 INTEGER TYPE 的

     


    Chi
    2011年2月20日 14:58
    版主
  • 你好

    可以用' Dim dInfo() As IO.DirectoryInfo 代 Dim dInfo() As DirectoryInfo

     

    你知道你的檔案只是有 數字的嗎? 如果不是的話或者你可以 COMMENT OUT  這一句 'If IsNumeric(dInfo(a).Name) then

        For a As Integer = 0 To dInfo.Count - 1

    'If IsNumeric(dInfo(a).Name) then

                arr(a) = dInfo(a).Name

    'end if

            Next

    但是如果你的資料夾有文字的話... 你的ARRAY 便會出錯..

    因為你DEFINE 的ARRAY 是 INTEGER TYPE 的

     

    还是无法显示文件名称..


    Chi
    2011年2月20日 15:17
  • 你好

    對不起我MIS-READ 你的問題, 我以為你是想找資料夾名義..如果你要找檔案名 可以把

    d.GetDirectories

    轉成

    d.GetFiles

    或者你可以嘗試以下的code

     

    Dim arr(d.GetFiles.Count - 1) As Integer

            Dim dInfo() As FileInfo = d.GetFiles

            For a As Integer = 0 To dInfo.Count - 1

                arr(a) = dInfo(a).Name.Substring(0, dInfo(a).Name.Length - dInfo(a).Extension.Length + 1)

            Next

     

            Array.Sort(arr)

     

      Me.ComboBox1.DataSource = arr

    Please correct me if my concept is wrong


    Chi
    2011年2月20日 15:41
    版主
  • 你好

    對不起我MIS-READ 你的問題, 我以為你是想找資料夾名義..如果你要找檔案名 可以把

    d.GetDirectories

    轉成

    d.GetFiles

    或者你可以嘗試以下的code

     

    Dim arr(d.GetFiles.Count - 1) As Integer

            Dim dInfo() As FileInfo = d.GetFiles

            For a As Integer = 0 To dInfo.Count - 1

                arr(a) = dInfo(a).Name.Substring(0, dInfo(a).Name.Length - dInfo(a).Extension.Length + 1)

            Next

     

            Array.Sort(arr)

     

      Me.ComboBox1.DataSource = arr

    Please correct me if my concept is wrong


    Chi
    没有出现错误,但还是无法显示档案名在combobox.
    2011年2月21日 6:40
  • 你好

    可不可以貼上你的source code給我們參考

    和你 嘗試 讀的 Folder/File screen shot

    待我們可以看看那裡出現問題

    我嘗試在自己的電腦上運行是沒有問題題

    Please correct me if my concept is wrong


    Chi
    2011年2月21日 6:47
    版主
  • 你好

    可不可以貼上你的source code給我們參考

    和你 嘗試 讀的 Folder/File screen shot

    待我們可以看看那裡出現問題

    我嘗試在自己的電腦上運行是沒有問題題

    Please correct me if my concept is wrong


    Chi

    Public Class Form3

        Dim f, d As String

        Dim p1 As String = "C:\Users\ck\Downloads\comic\hong kong comic\三国骄皇"

        Dim p2 As String = "C:\Users\ck\Downloads\comic\hong kong comic\春秋战雄"

     

        Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

     

            TextBox1.Text = ""

            book()

            check()

        End Sub

     

        Private Sub check()

            If TextBox1.Text = "" Then

                WebBrowser1.Visible = False

            End If

        End Sub

     

        Private Sub book()

            f = Label3.Text

            Select Case f

                Case "春秋战雄"

                    f = p2

                    Call volume()

                Case "三国骄皇"

                    f = p1

                    Call volume()

            End Select

        End Sub

     

        Private Sub volume()

            Dim d As New System.IO.DirectoryInfo(f)

            Dim arr(d.GetFiles.Count - 1) As Integer

            Dim dInfo() As IO.FileInfo = d.GetFiles

     

            For a As Integer = 0 To dInfo.Count - 1

                arr(a) = dInfo(a).Name.Substring(0, dInfo(a).Name.Length - dInfo(a).Extension.Length + 1)

            Next

     

            Array.Sort(arr)

            Me.ComboBox1.DataSource = arr

        End Sub

     

        Private Sub ComboBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged

            TextBox1.Text = ComboBox1.Text

            WebBrowser1.Navigate(f + "\" + TextBox1.Text)

            WebBrowser1.Visible = True

        End Sub

    End Class

    2011年2月21日 7:17
  • 你好

    有沒有嘗試過

    直接放倏 PATH 到 

     

      Private Sub volume()

            Dim d As New System.IO.DirectoryInfo("C:\Users\ck\Downloads\comic\hong kong comic\三国骄皇\")

            Dim arr(d.GetFiles.Count - 1) As Integer

            Dim dInfo() As IO.FileInfo = d.GetFiles

     

            For a As Integer = 0 To dInfo.Count - 1

                arr(a) = dInfo(a).Name.Substring(0, dInfo(a).Name.Length - dInfo(a).Extension.Length + 1)

            Next

     

            Array.Sort(arr)

            Me.ComboBox1.DataSource = arr

        End Sub

    有沒有結果?

    Please Correct me if my concept is wrong


    Chi
    • 已标记为答案 ckjason 2011年2月22日 5:19
    2011年2月21日 8:19
    版主
  • 你好

    有沒有嘗試過

    直接放倏 PATH 到 

     

     

      Private Sub volume()

            Dim d As New System.IO.DirectoryInfo("C:\Users\ck\Downloads\comic\hong kong comic\三国骄皇\")

            Dim arr(d.GetFiles.Count - 1) As Integer

            Dim dInfo() As IO.FileInfo = d.GetFiles

     

            For a As Integer = 0 To dInfo.Count - 1

                arr(a) = dInfo(a).Name.Substring(0, dInfo(a).Name.Length - dInfo(a).Extension.Length + 1)

            Next

     

            Array.Sort(arr)

            Me.ComboBox1.DataSource = arr

        End Sub

     

    有沒有結果?

    Please Correct me if my concept is wrong


    Chi
    由于路径并不是只有一个,所以我才没有放在directoryinfo的路径。
    2011年2月21日 9:45
  • 你好

    這可以測試一下是那一段CODE 出現問題

    所以我建議你先試一下

    把PATH 放進這裡試試看

    Please correct me if my concept is wrong


    Chi
    2011年2月21日 12:03
    版主