none
如何獲得CheckedList選取什麼並存取到陣列? RRS feed

  • 問題

  • 剛剛去翻了一下書
    若是我的CheckedList是:
    項目1
    項目2
    項目3
    項目4

    我參考書上的內容寫出來的程式碼:

        Private Sub CheckedListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckedListBox1.SelectedIndexChanged
            Dim p() As String
            ReDim p(CheckedListBox1.Items.Count - 1)
            Me.TextBox1.Text = ""
            For i As Integer = 1 To CheckedListBox1.Items.Count - 1
                If Me.CheckedListBox1.GetItemChecked(i) = True Then
                    p(i) = CheckedListBox1.Items(i)
                    TextBox2.Text = p(i) & vbCrLf
                End If

            Next
        End Sub

    問題:For i As Integer = 1 To CheckedListBox1.Items.Count - 1
    CheckedListBox1.Items.Count - 1為什麼不能直接改成數字呢?
    當我選取項目1的時候 它顯示:項目1
    當我選取項目4的時候 它顯示:項目4 然後再勾選項目1 他還是顯示項目4


    2007年3月9日 下午 12:17

解答

  • 迴圈外是指回圈上方,你加在哪?


            Me.TextBox1.Text = ""
            TextBox2.Text = ""
            For i As Integer = 1 To CheckedListBox1.Items.Count - 1
                If Me.CheckedListBox1.GetItemChecked(i) = True Then
                    p(i) = CheckedListBox1.Items(i)
                    TextBox2.Text &= p(i) & vbCrLf
                End If
            Next

    你的問題在於完全不清楚程式怎樣跑,請先參考既有討論,關於逐步執行的說明:

    http://forums.microsoft.com/MSDN-CHT/Search/Search.aspx?words=%u9010%u6b65%u57f7%u884c&localechoice=31748&SiteID=14&searchscope=allforums

    其中一篇:

    http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=1041801&SiteID=14

     在你要輸出的那行,按下 f9 ,會發覺左邊會出現棕色點,以後直接按那個位置就可以設定或取消。

    這個叫做中斷點。

    執行到那行會暫停,回到 IDE 視窗,這時會看到黃色的一行,表示即將要執行的行號。

    滑鼠移到變數上,會用 Tooltips 方式跳出變數值,可以透過 + 展開,或著把整個變數反白,按下 Shift+F9 ,可以看到靜態視窗,展示完整變數值... 看完關閉視窗。

    按下 F11 ,只執行一行,或設定下個中斷點,按下 F5 ...

    大部分情況下,這樣就夠用了,不需要用 Debug.Print ...

    特定條件中斷,可以看除錯 Menu 下相關功能來增強,比如說當 i=15 時中斷...

    微軟編譯器最強的地方不是在於效能、最佳化等,而是在於除錯器,所以 Intel C Compiler 也可以掛在 VS2005 上,配合 VS IDE 環境除錯...

    早期 VB6 的更強,發現程式碼錯誤,改掉後還可以繼續往下跑... VSNET 則需要重新執行。

    2007年3月9日 下午 03:45
    版主

所有回覆

  • TextBox2.Text &= p(i) & vbCrLf

    在迴圈外面再加:

    TextBox2.Text = ""

    2007年3月9日 下午 12:22
    版主
  • 加了之後變的更亂@@
    我是想弄一個檢測頁面是否存在的東西
    選項有:
    /123.html
    /1.html
    然後我想知道使用者有沒有去勾選他
    有勾選就檢測
    2007年3月9日 下午 03:21
  • 亂在哪?請舉例。
    2007年3月9日 下午 03:23
    版主
  • 若是加上textbox2.text=""
    然後textbox2就完全不會顯示任何東西

    若是只加上那個&
    textbox2.text 我按照順序勾了123他出現
    項目2
    項目2
    項目3
    然後我若是勾選之後去選取別的
    沒有勾選 他會把勾選的再重複一次
    eg:我勾選2 他出現2 我選取3 他出現2 2

    2007年3月9日 下午 03:33
  • 迴圈外是指回圈上方,你加在哪?


            Me.TextBox1.Text = ""
            TextBox2.Text = ""
            For i As Integer = 1 To CheckedListBox1.Items.Count - 1
                If Me.CheckedListBox1.GetItemChecked(i) = True Then
                    p(i) = CheckedListBox1.Items(i)
                    TextBox2.Text &= p(i) & vbCrLf
                End If
            Next

    你的問題在於完全不清楚程式怎樣跑,請先參考既有討論,關於逐步執行的說明:

    http://forums.microsoft.com/MSDN-CHT/Search/Search.aspx?words=%u9010%u6b65%u57f7%u884c&localechoice=31748&SiteID=14&searchscope=allforums

    其中一篇:

    http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=1041801&SiteID=14

     在你要輸出的那行,按下 f9 ,會發覺左邊會出現棕色點,以後直接按那個位置就可以設定或取消。

    這個叫做中斷點。

    執行到那行會暫停,回到 IDE 視窗,這時會看到黃色的一行,表示即將要執行的行號。

    滑鼠移到變數上,會用 Tooltips 方式跳出變數值,可以透過 + 展開,或著把整個變數反白,按下 Shift+F9 ,可以看到靜態視窗,展示完整變數值... 看完關閉視窗。

    按下 F11 ,只執行一行,或設定下個中斷點,按下 F5 ...

    大部分情況下,這樣就夠用了,不需要用 Debug.Print ...

    特定條件中斷,可以看除錯 Menu 下相關功能來增強,比如說當 i=15 時中斷...

    微軟編譯器最強的地方不是在於效能、最佳化等,而是在於除錯器,所以 Intel C Compiler 也可以掛在 VS2005 上,配合 VS IDE 環境除錯...

    早期 VB6 的更強,發現程式碼錯誤,改掉後還可以繼續往下跑... VSNET 則需要重新執行。

    2007年3月9日 下午 03:45
    版主
  • 我理解了。
    我以為中斷點是個很複雜的東西。
    我會多利用這個功能的。
    謝謝
    2007年3月9日 下午 03:49