none
請問如何快速全選ListBox內的項目? RRS feed

  • 問題

  • 請問一下各位大大..在vb2005中,.如何快速全選ListBox內的項目?
    底下是小弟 ListBox1 "全選"這個功能的程式碼

         Dim endi, i As Integer
         endi = Me.ListBox1.Items.Count - 1
         Me.ListBox1.Enabled = False
         For i = 0 To endi
         Me.ListBox1.SetSelected(i, True)
         Next
         Me.ListBox1.Enabled = True

    當 ListBox1 中 項目不多時..是沒問題的..但當筆數超過上萬筆時
    它的效能就不怎麼好了,查了好久,也查不到其它方法。
    不像 Me.ListBox1.ClearSelected() "取消選擇" ,不管有多少筆項目,速度都很快。
    請問是不是有其它的方式可以達到快速全選的效果呢?還望各位前輩不吝指導,謝謝。
    2007年4月4日 下午 03:44

解答

  • Hi,可以利用SendKeys去做

    Code Snippet

    ListBox1.SelectionMode = SelectionMode.MultiExtended
      ListBox1.Focus()
      SendKeys.Send("{HOME}")
      SendKeys.Send("+{END}")

     

     

    2007年4月6日 上午 09:50
    版主

所有回覆

  • 1. 重點應該是 "你為什麼要在 ListBox 放上萬筆資料" 吧?

    2. 好像沒有內建的方法可以快選 ...

    2007年4月5日 上午 12:08
    版主
  •  小朱 寫信:

    1. 重點應該是 "你為什麼要在 ListBox 放上萬筆資料" 吧?

    2. 好像沒有內建的方法可以快選 ...

    因為..有上萬筆資料要全LIST 出來,,

    如果用其它的控制項,,好像會比較慢,,

    用 ListBox.AddRange 會比較快不是嗎??

    或著還有其它更快速的方法??


    我試過,如果先選第一筆,再按位Shift 選最後一筆,這樣手動全選的速度也是非常的快的,
    不知道程式可不可以做到像手動全選那麼快,或有其它方式可以做到呢?
    2007年4月5日 上午 11:01
  • Hi,可以利用SendKeys去做

    Code Snippet

    ListBox1.SelectionMode = SelectionMode.MultiExtended
      ListBox1.Focus()
      SendKeys.Send("{HOME}")
      SendKeys.Send("+{END}")

     

     

    2007年4月6日 上午 09:50
    版主
  •  bauann 寫信:

    Hi,可以利用SendKeys去做

    Code Snippet

    ListBox1.SelectionMode = SelectionMode.MultiExtended
      ListBox1.Focus()
      SendKeys.Send("{HOME}")
      SendKeys.Send("+{END}")

     

     

    呵~謝謝了,雖然沒 ListBox 內建的方法,不過這也是個變通的方式,我找時間再試試,謝囉..^^

    2007年4月6日 下午 02:43